Sync up the changes for v15 98/75698/5
authorKajur, Harish (vk250x) <vk250x@att.com>
Fri, 11 Jan 2019 19:13:38 +0000 (14:13 -0500)
committerKajur, Harish (vk250x) <vk250x@att.com>
Mon, 14 Jan 2019 01:30:47 +0000 (20:30 -0500)
Issue-ID: AAI-1811
Change-Id: I307731ee35d8a644ae995c4b372345a7ebeca0a1
Signed-off-by: Kajur, Harish (vk250x) <vk250x@att.com>
Signed-off-by: Harish Venkata Kajur <vk250x@att.com>
79 files changed:
.editorconfig [new file with mode: 0644]
aai-auth/LICENSE.txt [new file with mode: 0644]
aai-core/pom.xml
aai-core/src/main/java/org/onap/aai/config/SwaggerGenerationConfiguration.java
aai-core/src/main/java/org/onap/aai/dbgen/GraphSONPartialIO.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/dbgen/GraphSONPartialReader.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java
aai-core/src/main/java/org/onap/aai/dbmap/InMemoryGraph.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/extensions/OrphanLInterfaceHandler.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/ingestModel/CreateWidgetModels.java
aai-core/src/main/java/org/onap/aai/parsers/uri/URIParser.java
aai-core/src/main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java
aai-core/src/main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java
aai-core/src/main/java/org/onap/aai/query/builder/QueryBuilder.java
aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java
aai-core/src/main/java/org/onap/aai/restcore/HttpMethod.java
aai-core/src/main/java/org/onap/aai/restcore/search/GremlinGroovyShell.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/restcore/search/GroovyQueryBuilder.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java
aai-core/src/main/java/org/onap/aai/service/NodeValidationService.java [new file with mode: 0644]
aai-core/src/main/java/org/onap/aai/util/AAIConstants.java
aai-core/src/main/java/org/onap/aai/util/GenerateXsd.java
aai-core/src/main/java/org/onap/aai/util/genxsd/NodesYAMLfromOXM.java
aai-core/src/main/java/org/onap/aai/util/genxsd/OxmFileProcessor.java
aai-core/src/main/java/org/onap/aai/util/genxsd/PutOperation.java
aai-core/src/main/java/org/onap/aai/util/genxsd/XSDElement.java
aai-core/src/main/java/org/onap/aai/util/genxsd/YAMLfromOXM.java
aai-core/src/main/java/org/onap/aai/web/EventClientPublisher.java
aai-core/src/main/resources/schema-ingest.properties [new file with mode: 0644]
aai-core/src/test/java/org/onap/aai/AAISetup.java
aai-core/src/test/java/org/onap/aai/DataLinkSetup.java [new file with mode: 0644]
aai-core/src/test/java/org/onap/aai/introspection/MoxyEngineTest.java
aai-core/src/test/java/org/onap/aai/introspection/PropertyPredicatesTest.java
aai-core/src/test/java/org/onap/aai/introspection/sideeffect/DataCopyTest.java
aai-core/src/test/java/org/onap/aai/introspection/sideeffect/DataLinkTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/CreateUUIDTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/DefaultFieldsTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/InjectKeysFromURITest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/IntrospectorValidatorTest.java
aai-core/src/test/java/org/onap/aai/introspection/tools/RemoveNonVisiblePropertyTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/GraphTraversalTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/LegacyQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/RelationshipGremlinQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/RelationshipQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/UniqueRelationshipQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/query/UniqueURIQueryTest.java
aai-core/src/test/java/org/onap/aai/parsers/relationship/RelationshipToURITest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIParserTest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIToExtensionInformationTest.java
aai-core/src/test/java/org/onap/aai/parsers/uri/URIToObjectTest.java
aai-core/src/test/java/org/onap/aai/query/builder/QueryBuilderTestAbstraction.java
aai-core/src/test/java/org/onap/aai/rest/PserverDuplicateTest.java
aai-core/src/test/java/org/onap/aai/rest/PserverTest.java
aai-core/src/test/java/org/onap/aai/serialization/db/DbAliasTest.java
aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializerTest.java
aai-core/src/test/java/org/onap/aai/serialization/db/DbSerializer_needsFakeRulesTest.java
aai-core/src/test/java/org/onap/aai/serialization/tinkerpop/TreeBackedVertexTest.java
aai-core/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforDataLink.java [new file with mode: 0644]
aai-core/src/test/java/org/onap/aai/util/genxsd/NodesYAMLfromOXMTest.java
aai-core/src/test/java/org/onap/aai/util/genxsd/XSDElementTest.java
aai-core/src/test/resources/dbedgerules/DbEdgerules_four.json [new file with mode: 0644]
aai-core/src/test/resources/dbedgerules/DbEdgerules_one.json [new file with mode: 0644]
aai-core/src/test/resources/dbedgerules/DbEdgerules_three.json [new file with mode: 0644]
aai-core/src/test/resources/dbedgerules/DbEdgerules_two.json [new file with mode: 0644]
aai-core/src/test/resources/oxm/dbalias_oxm_four.xml [new file with mode: 0644]
aai-core/src/test/resources/oxm/dbalias_oxm_one.xml [new file with mode: 0644]
aai-core/src/test/resources/oxm/dbalias_oxm_three.xml [new file with mode: 0644]
aai-core/src/test/resources/oxm/dbalias_oxm_two.xml [new file with mode: 0644]
aai-core/src/test/resources/schema-ingest.properties
aai-schema-ingest/.classpath [new file with mode: 0644]
aai-schema-ingest/src/main/java/org/onap/aai/config/NodesConfiguration.java
aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeIngestor.java
aai-schema-ingest/src/main/java/org/onap/aai/edges/EdgeRuleQuery.java
aai-schema-ingest/src/main/java/org/onap/aai/edges/enums/EdgeType.java
aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java [new file with mode: 0644]
aai-schema-ingest/src/main/java/org/onap/aai/nodes/NodeIngestor.java
aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java [new file with mode: 0644]
aai-utils/LICENSE.txt [new file with mode: 0644]
pom.xml

diff --git a/.editorconfig b/.editorconfig
new file mode 100644 (file)
index 0000000..a03599d
--- /dev/null
@@ -0,0 +1,24 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+[*]
+
+# Change these settings to your own preference
+indent_style = space
+indent_size = 4
+
+# We recommend you to keep these unchanged
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[{package,bower}.json]
+indent_style = space
+indent_size = 2
diff --git a/aai-auth/LICENSE.txt b/aai-auth/LICENSE.txt
new file mode 100644 (file)
index 0000000..eb76ea4
--- /dev/null
@@ -0,0 +1,18 @@
+============LICENSE_START=======================================================
+org.onap.aai
+================================================================================
+Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+Copyright © 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.
+============LICENSE_END=========================================================
index fbf6ff4..f43c19e 100644 (file)
@@ -48,7 +48,7 @@
         <activemq.version>5.15.6</activemq.version>
         <jacoco.line.coverage.limit>0.50</jacoco.line.coverage.limit>
         <gremlin.version>3.2.2</gremlin.version>
-       <groovy.version>2.4.15</groovy.version>
+        <groovy.version>2.4.15</groovy.version>
         <jetty.version>9.4.11.v20180605</jetty.version>
 
         <!-- Start of Default ONAP Schema Properties -->
         <schema.configuration.location>N/A</schema.configuration.location>
         <schema.nodes.location>aai-schema/src/main/resources/${aai.release}/oxm</schema.nodes.location>
         <schema.edges.location>aai-schema/src/main/resources/${aai.release}/dbedgerules</schema.edges.location>
-        <schema.version.depth.start>v9</schema.version.depth.start>
+        <schema.version.depth.start>v10</schema.version.depth.start>
         <schema.version.related.link.start>v10</schema.version.related.link.start>
         <schema.version.app.root.start>v11</schema.version.app.root.start>
         <schema.version.namespace.change.start>v12</schema.version.namespace.change.start>
         <schema.version.edge.label.start>v12</schema.version.edge.label.start>
         <schema.version.api.default>v15</schema.version.api.default>
-        <schema.version.list>v8,v9,v10,v11,v12,v13,v14,v15</schema.version.list>
+        <schema.version.list>v10,v11,v12,v13,v14,v15</schema.version.list>
         <schema.translator.list>config</schema.translator.list>
         <!-- End of Default ONAP Schema Properties -->
     </properties>
                 <schema.configuration.location>N/A</schema.configuration.location>
                 <schema.nodes.location>aai-schema/src/main/resources/${aai.release}/oxm</schema.nodes.location>
                 <schema.edges.location>aai-schema/src/main/resources/${aai.release}/dbedgerules</schema.edges.location>
-                <schema.version.depth.start>v9</schema.version.depth.start>
+                <schema.version.depth.start>v10</schema.version.depth.start>
                 <schema.version.related.link.start>v10</schema.version.related.link.start>
                 <schema.version.app.root.start>v11</schema.version.app.root.start>
                 <schema.version.edge.label.start>v12</schema.version.edge.label.start>
                 <schema.version.namespace.change.start>v12</schema.version.namespace.change.start>
                 <schema.version.api.default>v15</schema.version.api.default>
-                <schema.version.list>v8,v9,v10,v11,v12,v13,v14,v15</schema.version.list>
+                <schema.version.list>v10,v11,v12,v13,v14,v15</schema.version.list>
                 <gendoc.version>v15</gendoc.version>
             </properties>
         </profile>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>unpack-schema-dependency</id>
+                        <phase>initialize</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.aai.aai-common</groupId>
+                                    <artifactId>aai-schema</artifactId>
+                                    <version>1.4.0</version>
+                                    <outputDirectory>${project.basedir}/src/test/resources/</outputDirectory>
+                                    <includes>onap/oxm/**/*.xml</includes>
+                                </artifactItem>
+                            </artifactItems>
+                            <!-- other configurations here -->
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-edgerules-dependency</id>
+                        <phase>initialize</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.aai.aai-common</groupId>
+                                    <artifactId>aai-schema</artifactId>
+                                    <version>1.4.0</version>
+                                    <outputDirectory>${project.basedir}/src/test/resources/</outputDirectory>
+                                    <includes>onap/dbedgerules/**/*.json</includes>
+                                </artifactItem>
+                            </artifactItems>
+                            <!-- other configurations here -->
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>sonar-maven-plugin</artifactId>
index 9aae5a6..dea284c 100644 (file)
@@ -37,31 +37,28 @@ import org.springframework.context.annotation.Scope;
 @Configuration
 public class SwaggerGenerationConfiguration {
 
-       @Value("${schema.uri.base.path}")
-       private String basePath;
+    @Value("${schema.uri.base.path}")
+    private String basePath;
 
-       @Value("${schema.xsd.maxoccurs:5000}")
-       private String maxOccurs;
-       
-       @Bean
-       @Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-       public NodesYAMLfromOXM nodesYamlFromOXM(SchemaVersions schemaVersions, NodeIngestor nodeIngestor, EdgeIngestor edgeIngestor) {
-               NodesYAMLfromOXM nodesYamlFromOXM = new NodesYAMLfromOXM(basePath, schemaVersions, nodeIngestor, edgeIngestor);
-               return nodesYamlFromOXM;
-       }
-       
-       @Bean
-       @Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-       public HTMLfromOXM htmlFromOXM(SchemaVersions schemaVersions, NodeIngestor nodeIngestor, EdgeIngestor edgeIngestor) {
-               HTMLfromOXM htmlFromOXM = new HTMLfromOXM(maxOccurs, schemaVersions, nodeIngestor, edgeIngestor);
-               return htmlFromOXM;
-       }
-       
-       @Bean
-       @Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-       public YAMLfromOXM yamlFromOXM(SchemaVersions schemaVersions, NodeIngestor nodeIngestor, EdgeIngestor edgeIngestor) {
-               YAMLfromOXM yamlFromOXM = new YAMLfromOXM(basePath, schemaVersions, nodeIngestor, edgeIngestor);
-               return yamlFromOXM;
-       }
+    @Value("${schema.xsd.maxoccurs:5000}")
+    private String maxOccurs;
+
+    @Bean
+    @Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+    public NodesYAMLfromOXM nodesYamlFromOXM(SchemaVersions schemaVersions, NodeIngestor nodeIngestor, EdgeIngestor edgeIngestor) {
+        return new NodesYAMLfromOXM(basePath, schemaVersions, nodeIngestor, edgeIngestor);
+    }
+
+    @Bean
+    @Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+    public HTMLfromOXM htmlFromOXM(SchemaVersions schemaVersions, NodeIngestor nodeIngestor, EdgeIngestor edgeIngestor) {
+        return new HTMLfromOXM(maxOccurs, schemaVersions, nodeIngestor, edgeIngestor);
+    }
+
+    @Bean
+    @Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+    public YAMLfromOXM yamlFromOXM(SchemaVersions schemaVersions, NodeIngestor nodeIngestor, EdgeIngestor edgeIngestor) {
+        return new YAMLfromOXM(basePath, schemaVersions, nodeIngestor, edgeIngestor);
+    }
     
 }
diff --git a/aai-core/src/main/java/org/onap/aai/dbgen/GraphSONPartialIO.java b/aai-core/src/main/java/org/onap/aai/dbgen/GraphSONPartialIO.java
new file mode 100644 (file)
index 0000000..915db69
--- /dev/null
@@ -0,0 +1,158 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.dbgen;
+
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.Io;
+import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
+import org.apache.tinkerpop.gremlin.structure.io.Mapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Optional;
+import java.util.function.Consumer;
+
+/**
+ * Constructs GraphSON IO implementations given a {@link Graph} and {@link IoRegistry}. Implementers of the {@link Graph}
+ * interfaces should see the {@link GraphSONMapper} for information on the expectations for the {@link IoRegistry}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class GraphSONPartialIO implements Io<GraphSONPartialReader.Builder, GraphSONWriter.Builder, GraphSONMapper.Builder> {
+    private final IoRegistry registry;
+    private final Graph graph;
+    private final Optional<Consumer<Mapper.Builder>> onMapper;
+    private final GraphSONVersion version;
+
+    private GraphSONPartialIO(final Builder builder) {
+        this.registry = builder.registry;
+        this.graph = builder.graph;
+        this.onMapper = Optional.ofNullable(builder.onMapper);
+        this.version = builder.version;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public GraphSONPartialReader.Builder reader() {
+        return GraphSONPartialReader.build().mapper(mapper().create());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public GraphSONWriter.Builder writer() {
+        return GraphSONWriter.build().mapper(mapper().create());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public GraphSONMapper.Builder mapper() {
+        final GraphSONMapper.Builder builder = (null == this.registry) ?
+                GraphSONMapper.build().version(version) : GraphSONMapper.build().version(version).addRegistry(this.registry);
+        onMapper.ifPresent(c -> c.accept(builder));
+        return builder;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void writeGraph(final String file) throws IOException {
+        try (final OutputStream out = new FileOutputStream(file)) {
+            writer().create().writeGraph(out, graph);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void readGraph(final String file) throws IOException {
+        try (final InputStream in = new FileInputStream(file)) {
+            reader().create().readGraph(in, graph);
+        }
+    }
+
+    /**
+     * Create a new builder using the default version of GraphSON.
+     */
+    public static Io.Builder<GraphSONPartialIO> build() {
+        return build(GraphSONVersion.V1_0);
+    }
+
+    /**
+     * Create a new builder using the specified version of GraphSON.
+     */
+    public static Io.Builder<GraphSONPartialIO> build(final GraphSONVersion version) {
+        return new Builder(version);
+    }
+
+    public final static class Builder implements Io.Builder<GraphSONPartialIO> {
+
+        private IoRegistry registry = null;
+        private Graph graph;
+        private Consumer<Mapper.Builder> onMapper = null;
+        private final GraphSONVersion version;
+
+        Builder(final GraphSONVersion version) {
+            this.version = version;
+        }
+
+        /**
+         * @deprecated As of release 3.2.2, replaced by {@link #onMapper(Consumer)}.
+         */
+        @Deprecated
+        @Override
+        public Io.Builder<GraphSONPartialIO> registry(final IoRegistry registry) {
+            this.registry = registry;
+            return this;
+        }
+
+        @Override
+        public Io.Builder<? extends Io> onMapper(final Consumer<Mapper.Builder> onMapper) {
+            this.onMapper = onMapper;
+            return this;
+        }
+
+        @Override
+        public Io.Builder<GraphSONPartialIO> graph(final Graph g) {
+            this.graph = g;
+            return this;
+        }
+
+        @Override
+        public GraphSONPartialIO create() {
+            if (null == graph) throw new IllegalArgumentException("The graph argument was not specified");
+            return new GraphSONPartialIO(this);
+        }
+    }
+}
diff --git a/aai-core/src/main/java/org/onap/aai/dbgen/GraphSONPartialReader.java b/aai-core/src/main/java/org/onap/aai/dbgen/GraphSONPartialReader.java
new file mode 100644 (file)
index 0000000..2088286
--- /dev/null
@@ -0,0 +1,354 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.dbgen;
+
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.GraphReader;
+import org.apache.tinkerpop.gremlin.structure.io.GraphWriter;
+import org.apache.tinkerpop.gremlin.structure.io.Mapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.Host;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
+import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.jackson.core.type.TypeReference;
+import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
+import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
+import org.apache.tinkerpop.shaded.jackson.databind.node.JsonNodeType;
+import org.onap.aai.dbmap.InMemoryGraph;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+/**
+ * This is a Wrapper around the GraphsonReader class
+ * The idea is to rewrite methods that are customized for A&AI
+ * GraphsonReader is a final class . hence the use of the Wrapper
+ * instead of inheriting-overwriting
+ *
+ * 
+ */
+public final class GraphSONPartialReader implements GraphReader {
+    private final ObjectMapper mapper ;
+    private final long batchSize ;
+    private final GraphSONVersion version ;
+    private boolean unwrapAdjacencyList = false;
+    private final GraphSONReader reader;
+    
+    private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(InMemoryGraph.class);
+
+    final TypeReference<Map<String, Object>> mapTypeReference = new TypeReference<Map<String, Object>>() {
+    };
+
+    private GraphSONPartialReader(final Builder builder) {
+        mapper = builder.mapper.createMapper();
+        batchSize = builder.batchSize;
+        unwrapAdjacencyList = builder.unwrapAdjacencyList;
+        version = ((GraphSONMapper)builder.mapper).getVersion();
+        reader = GraphSONReader.build().create();
+    }
+
+    /**
+     * Read data into a {@link Graph} from output generated by any of the {@link GraphSONWriter} {@code writeVertex} or
+     * {@code writeVertices} methods or by {@link GryoWriter#writeGraph(OutputStream, Graph)}.
+     *
+     * @param inputStream a stream containing an entire graph of vertices and edges as defined by the accompanying
+     *                    {@link GraphSONWriter#writeGraph(OutputStream, Graph)}.
+     * @param graphToWriteTo the graph to write to when reading from the stream.
+     */
+    @Override
+    public void readGraph(final InputStream inputStream, final Graph graphToWriteTo) throws IOException {
+        // dual pass - create all vertices and store to cache the ids.  then create edges.  as long as we don't
+        // have vertex labels in the output we can't do this single pass
+       LOGGER.info("Read the Partial Graph");
+       final Map<StarGraph.StarVertex,Vertex> cache = new HashMap<>();
+        final AtomicLong counter = new AtomicLong(0);
+        
+        final boolean supportsTx = graphToWriteTo.features().graph().supportsTransactions();
+        final Graph.Features.EdgeFeatures edgeFeatures = graphToWriteTo.features().edge();
+        
+        readVertexStrings(inputStream).<Vertex>map(FunctionUtils.wrapFunction(line -> readVertex(new ByteArrayInputStream(line.getBytes()), null, null, Direction.IN))).forEach(vertex -> {
+               try{
+                       final Attachable<Vertex> attachable = (Attachable<Vertex>) vertex;
+                   cache.put((StarGraph.StarVertex) attachable.get(), attachable.attach(Attachable.Method.create(graphToWriteTo)));
+                   if (supportsTx && counter.incrementAndGet() % batchSize == 0)
+                       graphToWriteTo.tx().commit();
+               }
+               catch(Exception ex){
+                       LOGGER.info("Error in reading vertex from graphson"+vertex.toString());
+               }
+        });
+        
+        cache.entrySet().forEach(kv -> kv.getKey().edges(Direction.IN).forEachRemaining(e -> {
+               try{
+                       // can't use a standard Attachable attach method here because we have to use the cache for those
+                   // graphs that don't support userSuppliedIds on edges.  note that outVertex/inVertex methods return
+                   // StarAdjacentVertex whose equality should match StarVertex.
+                   final Vertex cachedOutV = cache.get(e.outVertex());
+                   final Vertex cachedInV = cache.get(e.inVertex());
+                   
+                   if(cachedOutV != null  && cachedInV != null){
+                        
+                           final Edge newEdge = edgeFeatures.willAllowId(e.id()) ? cachedOutV.addEdge(e.label(), cachedInV, T.id, e.id()) : cachedOutV.addEdge(e.label(), cachedInV);
+                           e.properties().forEachRemaining(p -> newEdge.property(p.key(), p.value()));
+                       }
+                   else{
+                       LOGGER.debug("Ghost edges from "+ cachedOutV + " to "+ cachedInV);
+                       
+                   }
+                   if (supportsTx && counter.incrementAndGet() % batchSize == 0)
+                       graphToWriteTo.tx().commit();
+               }
+               catch(Exception ex){
+                       LOGGER.info("Error in writing vertex into graph"+e.toString());
+               }
+        }));
+
+        if (supportsTx) graphToWriteTo.tx().commit();
+    }
+
+    /**
+     * Read {@link Vertex} objects from output generated by any of the {@link GraphSONWriter} {@code writeVertex} or
+     * {@code writeVertices} methods or by {@link GraphSONWriter#writeGraph(OutputStream, Graph)}.
+     *
+     * @param inputStream a stream containing at least one {@link Vertex} as defined by the accompanying
+     *                    {@link GraphWriter#writeVertices(OutputStream, Iterator, Direction)} or
+     *                    {@link GraphWriter#writeVertices(OutputStream, Iterator)} methods.
+     * @param vertexAttachMethod a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
+     * @param edgeAttachMethod a function that creates re-attaches a {@link Edge} to a {@link Host} object.
+     * @param attachEdgesOfThisDirection only edges of this direction are passed to the {@code edgeMaker}.
+     */
+    @Override
+    public Iterator<Vertex> readVertices(final InputStream inputStream,
+                                         final Function<Attachable<Vertex>, Vertex> vertexAttachMethod,
+                                         final Function<Attachable<Edge>, Edge> edgeAttachMethod,
+                                         final Direction attachEdgesOfThisDirection) throws IOException {
+       // return readVertexStrings(inputStream).<Vertex>map(FunctionUtils.wrapFunction(line -> readVertex(new ByteArrayInputStream(line.getBytes()), vertexAttachMethod, edgeAttachMethod, attachEdgesOfThisDirection))).iterator();
+        return reader.readVertices(inputStream, vertexAttachMethod, edgeAttachMethod, attachEdgesOfThisDirection);
+                       
+    }
+
+    /**
+     * Read a {@link Vertex}  from output generated by any of the {@link GraphSONWriter} {@code writeVertex} or
+     * {@code writeVertices} methods or by {@link GraphSONWriter#writeGraph(OutputStream, Graph)}.
+     *
+     * @param inputStream a stream containing at least a single vertex as defined by the accompanying
+     *                    {@link GraphWriter#writeVertex(OutputStream, Vertex)}.
+     * @param vertexAttachMethod a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
+     */
+    @Override
+    public Vertex readVertex(final InputStream inputStream, final Function<Attachable<Vertex>, Vertex> vertexAttachMethod) throws IOException {
+        return reader.readVertex(inputStream, vertexAttachMethod);
+    }
+
+    /**
+     * Read a {@link Vertex} from output generated by any of the {@link GraphSONWriter} {@code writeVertex} or
+     * {@code writeVertices} methods or by {@link GraphSONWriter#writeGraph(OutputStream, Graph)}.
+     *
+     * @param inputStream a stream containing at least one {@link Vertex} as defined by the accompanying
+     *                    {@link GraphWriter#writeVertices(OutputStream, Iterator, Direction)} method.
+     * @param vertexAttachMethod a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
+     * @param edgeAttachMethod a function that creates re-attaches a {@link Edge} to a {@link Host} object.
+     * @param attachEdgesOfThisDirection only edges of this direction are passed to the {@code edgeMaker}.
+     */
+    @Override
+    public Vertex readVertex(final InputStream inputStream,
+                             final Function<Attachable<Vertex>, Vertex> vertexAttachMethod,
+                             final Function<Attachable<Edge>, Edge> edgeAttachMethod,
+                             final Direction attachEdgesOfThisDirection) throws IOException {
+       
+       return reader.readVertex(inputStream, vertexAttachMethod, edgeAttachMethod, attachEdgesOfThisDirection);
+    }
+
+    /**
+     * Read an {@link Edge} from output generated by {@link GraphSONWriter#writeEdge(OutputStream, Edge)} or via
+     * an {@link Edge} passed to {@link GraphSONWriter#writeObject(OutputStream, Object)}.
+     *
+     * @param inputStream a stream containing at least one {@link Edge} as defined by the accompanying
+     *                    {@link GraphWriter#writeEdge(OutputStream, Edge)} method.
+     * @param edgeAttachMethod a function that creates re-attaches a {@link Edge} to a {@link Host} object.
+     */
+    @Override
+    public Edge readEdge(final InputStream inputStream, final Function<Attachable<Edge>, Edge> edgeAttachMethod) throws IOException {
+        /*if (version == GraphSONVersion.v1_0) {
+            final Map<String, Object> edgeData = mapper.readValue(inputStream, mapTypeReference);
+
+            final Map<String, Object> edgeProperties = edgeData.containsKey(GraphSONTokens.PROPERTIES) ?
+                    (Map<String, Object>) edgeData.get(GraphSONTokens.PROPERTIES) : Collections.EMPTY_MAP;
+            final DetachedEdge edge = new DetachedEdge(edgeData.get(GraphSONTokens.ID),
+                    edgeData.get(GraphSONTokens.LABEL).toString(),
+                    edgeProperties,
+                    Pair.with(edgeData.get(GraphSONTokens.OUT), edgeData.get(GraphSONTokens.OUT_LABEL).toString()),
+                    Pair.with(edgeData.get(GraphSONTokens.IN), edgeData.get(GraphSONTokens.IN_LABEL).toString()));
+
+            return edgeAttachMethod.apply(edge);
+        } else {
+            return edgeAttachMethod.apply((DetachedEdge) mapper.readValue(inputStream, Edge.class));
+        }*/
+       return reader.readEdge(inputStream, edgeAttachMethod);
+    }
+
+    /**
+     * Read a {@link VertexProperty} from output generated by
+     * {@link GraphSONWriter#writeVertexProperty(OutputStream, VertexProperty)} or via an {@link VertexProperty} passed
+     * to {@link GraphSONWriter#writeObject(OutputStream, Object)}.
+     *
+     * @param inputStream a stream containing at least one {@link VertexProperty} as written by the accompanying
+     *                    {@link GraphWriter#writeVertexProperty(OutputStream, VertexProperty)} method.
+     * @param vertexPropertyAttachMethod a function that creates re-attaches a {@link VertexProperty} to a
+     *                                   {@link Host} object.
+     */
+    @Override
+    public VertexProperty readVertexProperty(final InputStream inputStream,
+                                             final Function<Attachable<VertexProperty>, VertexProperty> vertexPropertyAttachMethod) throws IOException {
+        /*if (version == GraphSONVersion.v1_0) {
+            final Map<String, Object> vpData = mapper.readValue(inputStream, mapTypeReference);
+            final Map<String, Object> metaProperties = (Map<String, Object>) vpData.get(GraphSONTokens.PROPERTIES);
+            final DetachedVertexProperty vp = new DetachedVertexProperty(vpData.get(GraphSONTokens.ID),
+                    vpData.get(GraphSONTokens.LABEL).toString(),
+                    vpData.get(GraphSONTokens.VALUE), metaProperties);
+            return vertexPropertyAttachMethod.apply(vp);
+        } else {
+            return vertexPropertyAttachMethod.apply((DetachedVertexProperty) mapper.readValue(inputStream, VertexProperty.class));
+        }*/
+       return reader.readVertexProperty(inputStream, vertexPropertyAttachMethod);
+    }
+
+    /**
+     * Read a {@link Property} from output generated by  {@link GraphSONWriter#writeProperty(OutputStream, Property)} or
+     * via an {@link Property} passed to {@link GraphSONWriter#writeObject(OutputStream, Object)}.
+     *
+     * @param inputStream a stream containing at least one {@link Property} as written by the accompanying
+     *                    {@link GraphWriter#writeProperty(OutputStream, Property)} method.
+     * @param propertyAttachMethod a function that creates re-attaches a {@link Property} to a {@link Host} object.
+     */
+    @Override
+    public Property readProperty(final InputStream inputStream,
+                                 final Function<Attachable<Property>, Property> propertyAttachMethod) throws IOException {
+        /*if (version == GraphSONVersion.v1_0) {
+            final Map<String, Object> propertyData = mapper.readValue(inputStream, mapTypeReference);
+            final DetachedProperty p = new DetachedProperty(propertyData.get(GraphSONTokens.KEY).toString(), propertyData.get(GraphSONTokens.VALUE));
+            return propertyAttachMethod.apply(p);
+        } else {
+            return propertyAttachMethod.apply((DetachedProperty) mapper.readValue(inputStream, Property.class));
+        }*/
+       return reader.readProperty(inputStream, propertyAttachMethod);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <C> C readObject(final InputStream inputStream, final Class<? extends C> clazz) throws IOException {
+        return mapper.readValue(inputStream, clazz);
+    }
+
+    private Stream<String> readVertexStrings(final InputStream inputStream) throws IOException {
+        if (unwrapAdjacencyList) {
+               final JsonNode root = mapper.readTree(inputStream);
+            final JsonNode vertices = root.get(GraphSONTokens.VERTICES);
+            if (!vertices.getNodeType().equals(JsonNodeType.ARRAY)) throw new IOException(String.format("The '%s' key must be an array", GraphSONTokens.VERTICES));
+            return IteratorUtils.stream(vertices.elements()).map(Object::toString);
+        } else {
+               final BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
+            return br.lines();
+        }
+       
+    }
+
+    
+    public static Builder build() {
+        return new Builder();
+    }
+
+    public final static class Builder implements ReaderBuilder<GraphSONPartialReader> {
+        private long batchSize = 10000;
+
+        private Mapper<ObjectMapper> mapper = GraphSONMapper.build().create();
+        private boolean unwrapAdjacencyList = false;
+        
+
+        private Builder() {}
+
+        /**
+         * Number of mutations to perform before a commit is executed when using
+         * {@link GraphSONPartialReader#readGraph(InputStream, Graph)}.
+         */
+        public Builder batchSize(final long batchSize) {
+            this.batchSize = batchSize;
+            return this;
+        }
+
+        /**
+         * Override all of the {@link GraphSONMapper} builder
+         * options with this mapper.  If this value is set to something other than null then that value will be
+         * used to construct the writer.
+         */
+        public Builder mapper(final Mapper<ObjectMapper> mapper) {
+            this.mapper = mapper;
+            return this;
+        }
+
+        /**
+         * If the adjacency list is wrapped in a JSON object, as is done when writing a graph with
+         * {@link GraphSONWriter.Builder#wrapAdjacencyList} set to {@code true}, this setting needs to be set to
+         * {@code true} to properly read it.  By default, this value is {@code false} and the adjacency list is
+         * simply read as line delimited vertices.
+         * <p/>
+         * By setting this value to {@code true}, the generated JSON is no longer "splittable" by line and thus not
+         * suitable for OLAP processing.  Furthermore, reading this format of the JSON with
+         * {@link GraphSONPartialReader#readGraph(InputStream, Graph)} or
+         * {@link GraphSONPartialReader#readVertices(InputStream, Function, Function, Direction)} requires that the
+         * entire JSON object be read into memory, so it is best saved for "small" graphs.
+         */
+        public Builder unwrapAdjacencyList(final boolean unwrapAdjacencyList) {
+            this.unwrapAdjacencyList = unwrapAdjacencyList;
+            return this;
+        }
+
+        public GraphSONPartialReader create() {
+            return new GraphSONPartialReader(this);
+        }
+    }
+}
index d2f60f1..1f7f5db 100644 (file)
@@ -132,8 +132,8 @@ public class SchemaGenerator {
                                if (alias.isPresent()) {
                                        dbPropName = alias.get();
                                }
-                               if (graphMgmt.containsRelationType(propName)) {
-                                       String dmsg = " PropertyKey  [" + propName + "] already existed in the DB. ";
+                               if (graphMgmt.containsRelationType(dbPropName)) {
+                                       String dmsg = " PropertyKey  [" + dbPropName + "] already existed in the DB. ";
                                        LOGGER.debug(dmsg);
                                } else {
                                        Class<?> type = obj.getClass(propName);
@@ -164,8 +164,8 @@ public class SchemaGenerator {
                                                        String dmsg = " Index  [" + dbPropName + "] already existed in the DB. ";
                                                        LOGGER.debug(dmsg);
                                                } else {
-                                                       if (obj.getIndexedProperties().contains(propName)) {
-                                                               if (obj.getUniqueProperties().contains(propName)) {
+                                                       if (obj.getIndexedProperties().contains(dbPropName)) {
+                                                               if (obj.getUniqueProperties().contains(dbPropName)) {
                                                                        imsg = "Add Unique index for PropertyKey: [" + dbPropName + "]";
                                                                        LOGGER.info(imsg);
                                                                        graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).unique()
diff --git a/aai-core/src/main/java/org/onap/aai/dbmap/InMemoryGraph.java b/aai-core/src/main/java/org/onap/aai/dbmap/InMemoryGraph.java
new file mode 100644 (file)
index 0000000..84e1547
--- /dev/null
@@ -0,0 +1,149 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.dbmap;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.Properties;
+
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.tinkerpop.gremlin.structure.io.IoCore;
+import org.onap.aai.dbgen.GraphSONPartialIO;
+import org.onap.aai.dbgen.SchemaGenerator;
+import org.onap.aai.logging.LogFormatTools;
+
+import org.janusgraph.core.JanusGraphFactory;
+import org.janusgraph.core.JanusGraph;
+import org.janusgraph.core.JanusGraphTransaction;
+import org.janusgraph.core.schema.JanusGraphManagement;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+public class InMemoryGraph {
+
+       private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(InMemoryGraph.class);
+       private JanusGraph graph = null;
+
+
+       public InMemoryGraph(Builder builder) throws IOException  {
+               /*
+                * Create a In-memory graph
+                */
+               InputStream is = new FileInputStream(builder.propertyFile);
+               try {
+                       graph = JanusGraphFactory.open(builder.propertyFile);
+                       
+                       Properties graphProps = new Properties();
+                       graphProps.load(is);
+                       JanusGraphManagement graphMgt = graph.openManagement();
+            if(builder.isSchemaEnabled){
+               LOGGER.info("Schema Enabled");
+               SchemaGenerator.loadSchemaIntoJanusGraph(graph, graphMgt, graphProps.getProperty("storage.backend"));
+            }
+                       JanusGraphTransaction transaction = graph.newTransaction();
+                       LOGGER.info("Loading snapshot");
+                       if(builder.isPartialGraph){
+                               if ( (builder.graphsonLocation != null) && (builder.graphsonLocation.length() > 0) ) {
+                                       transaction.io(GraphSONPartialIO.build()).readGraph(builder.graphsonLocation);
+                           }
+                               else {
+                                       transaction.io(GraphSONPartialIO.build()).reader().create().readGraph(builder.seqInputStream, graph);
+                               }
+                       }
+                       else{
+                               if ( (builder.graphsonLocation != null) && (builder.graphsonLocation.length() > 0) ) {
+                                       transaction.io(IoCore.graphson()).readGraph(builder.graphsonLocation);
+                               }
+                               else {
+                                       transaction.io(IoCore.graphson()).reader().create().readGraph(builder.seqInputStream, graph);
+                               }
+                       }
+                       transaction.commit();
+                       
+               } catch (Exception e) {
+                       // TODO : Changesysout to logger
+                       e.printStackTrace();
+                       LOGGER.error(
+                                       "ERROR: Could not load datasnapshot to in memory graph. \n" + LogFormatTools.getStackTop(e));
+                       throw new IllegalStateException("Could not load datasnapshot to in memory graph");
+
+               }
+               finally{
+                       is.close();
+               }
+
+       }
+
+       public static class Builder {
+               private String graphsonLocation = "";
+               private String propertyFile = "";
+               private boolean isSchemaEnabled = false;
+               private InputStream seqInputStream = null;
+               private boolean isPartialGraph = false;
+
+
+               /*
+                * Builder constructor doesnt do anything
+                */
+               public Builder() {
+                       //Do nothing
+               }
+
+               public InMemoryGraph build(String graphsonFile, String propertyFile, boolean isSchemaEnabled) throws IOException {
+                       this.graphsonLocation = graphsonFile;
+                       this.propertyFile = propertyFile;
+                       this.isSchemaEnabled = isSchemaEnabled;
+                       return new InMemoryGraph(this);
+               }
+               
+               public InMemoryGraph build(InputStream sis, String propertyFile, boolean isSchemaEnabled) throws IOException {
+                       this.graphsonLocation = null;
+                       this.propertyFile = propertyFile;
+                       this.isSchemaEnabled = isSchemaEnabled;
+                       this.seqInputStream = sis;
+                       return new InMemoryGraph(this);
+               }
+               
+               public InMemoryGraph build(String graphsonFile, String propertyFile, boolean isSchemaEnabled, boolean isPartialGraph) throws IOException {
+                       this.graphsonLocation = graphsonFile;
+                       this.propertyFile = propertyFile;
+                       this.isSchemaEnabled = isSchemaEnabled;
+                       this.isPartialGraph = isPartialGraph;
+                       return new InMemoryGraph(this);
+               }
+               
+               public InMemoryGraph build(InputStream sis, String propertyFile, boolean isSchemaEnabled, boolean isPartialGraph) throws IOException {
+                       this.graphsonLocation = null;
+                       this.propertyFile = propertyFile;
+                       this.isSchemaEnabled = isSchemaEnabled;
+                       this.seqInputStream = sis;
+                       this.isPartialGraph = isPartialGraph;
+                       return new InMemoryGraph(this);
+               }
+       }
+
+       public JanusGraph getGraph() {
+               return graph;
+       }
+
+}
diff --git a/aai-core/src/main/java/org/onap/aai/extensions/OrphanLInterfaceHandler.java b/aai-core/src/main/java/org/onap/aai/extensions/OrphanLInterfaceHandler.java
new file mode 100644 (file)
index 0000000..128945d
--- /dev/null
@@ -0,0 +1,110 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.extensions;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.onap.aai.exceptions.AAIException;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.onap.aai.parsers.query.QueryParser;
+import org.onap.aai.query.builder.QueryBuilder;
+import org.onap.aai.rest.db.DBRequest;
+import org.onap.aai.restcore.HttpMethod;
+import org.onap.aai.edges.enums.EdgeType;
+
+public class OrphanLInterfaceHandler {
+       
+       private QueryBuilder<Vertex> createLInterfaceQuery(AAIExtensionMap aaiReqMap, Introspector newvceObj) throws AAIException {
+               Introspector uplinkLInterfaceTraversalIntro = aaiReqMap.getLoader().introspectorFromName("l-interface");
+               
+               Introspector customerUplinkLInterfaceTraversalIntro = aaiReqMap.getLoader().introspectorFromName("l-interface");
+               
+               Introspector logLinkIntroForTraversal = aaiReqMap.getLoader().introspectorFromName("logical-link");
+               
+               QueryBuilder<Vertex> query = aaiReqMap.getTransactionalGraphEngine().getQueryBuilder()
+                                                                               .exactMatchQuery(newvceObj)
+                                                                               .createEdgeTraversal(EdgeType.TREE, newvceObj, uplinkLInterfaceTraversalIntro)
+                                                                               .getVerticesByProperty("interface-role", "UPLINK")
+                                                                               .createEdgeTraversal(EdgeType.COUSIN, uplinkLInterfaceTraversalIntro, logLinkIntroForTraversal)
+                                                                               .createEdgeTraversal(EdgeType.COUSIN, logLinkIntroForTraversal, customerUplinkLInterfaceTraversalIntro)
+                                                                               .getVerticesByProperty("interface-role", "CUSTOMER-UPLINK").dedup();
+               return query;
+       }
+       
+       private URI buildLInterfaceURI(Vertex linterface, AAIExtensionMap aaiReqMap) throws UnsupportedEncodingException, AAIException, URISyntaxException {
+               Loader loader = aaiReqMap.getLoader();
+               Introspector lint = loader.introspectorFromName("l-interface");
+               lint.setValue("interface-name", (String)linterface.property("interface-name").value());
+               String lintSegment = lint.getURI();
+               
+               Introspector lagInterfaceForTrav = loader.introspectorFromName("lag-interface");
+               QueryBuilder<Vertex> lagIntQuery = aaiReqMap.getTransactionalGraphEngine().getQueryBuilder()
+                                                                               .exactMatchQuery(lint)
+                                                                               .createEdgeTraversal(EdgeType.TREE, linterface, lagInterfaceForTrav).dedup();
+               List<Vertex> lagInterfaces = lagIntQuery.toList();
+               if (lagInterfaces.isEmpty()) {
+                       throw new AAIException("AAI_6114");
+               } else if (lagInterfaces.size() > 1) {
+                       throw new AAIException("AAI_6140");
+               }
+               Vertex lagInt = lagInterfaces.get(0);
+               lagInterfaceForTrav.setValue("interface-name", (String)lagInt.property("interface-name").value());
+               String lagSegment = lagInterfaceForTrav.getURI();
+               
+               Introspector gvVPEforTrav = loader.introspectorFromName("generic-vnf");
+               QueryBuilder<Vertex> gvVPEquery = aaiReqMap.getTransactionalGraphEngine().getQueryBuilder()
+                                                                               .exactMatchQuery(lagInterfaceForTrav)
+                                                                               .createEdgeTraversal(EdgeType.TREE, lagInterfaceForTrav, gvVPEforTrav).dedup();
+               List<Vertex> genvnfs = gvVPEquery.toList();
+               if (genvnfs.isEmpty()) {
+                       throw new AAIException("AAI_6114");
+               } else if (genvnfs.size() > 1) {
+                       throw new AAIException("AAI_6140");
+               }
+               Vertex genvnf = genvnfs.get(0);
+               gvVPEforTrav.setValue("vnf-id", (String)genvnf.property("vnf-id").value());
+               String gvSegment = gvVPEforTrav.getURI();
+               
+               return new URI(gvSegment + lagSegment + lintSegment);
+       }
+
+       public List<DBRequest> createOrphanLInterfaceDelRequests(AAIExtensionMap aaiReqMap, Introspector newvce) throws AAIException, UnsupportedEncodingException, URISyntaxException{
+               List<DBRequest> requests = new ArrayList<>();
+               QueryBuilder<Vertex> query = createLInterfaceQuery(aaiReqMap, newvce);
+               List<Vertex> linterfaces = query.toList();
+               
+               for (Vertex lint : linterfaces) {
+                       URI lintURI = buildLInterfaceURI(lint, aaiReqMap);
+                       QueryParser parser = createLInterfaceQuery(aaiReqMap, newvce).createQueryFromObjectName("l-interface");
+                       DBRequest originalDbRequest = aaiReqMap.getDbRequest();
+                       DBRequest request = new DBRequest.Builder(HttpMethod.DELETE, lintURI, parser, newvce, originalDbRequest.getHeaders(), originalDbRequest.getInfo(), originalDbRequest.getTransactionId()).build();
+                       requests.add(request);
+               }
+               
+               return requests;
+       }
+}
index d5921c1..5f64102 100644 (file)
@@ -24,6 +24,7 @@ import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.UUID;
 
 import javax.xml.transform.stream.StreamSource;
@@ -36,6 +37,7 @@ import org.onap.aai.introspection.ModelType;
 import org.onap.aai.setup.SchemaVersion;
 import org.onap.aai.util.AAIConfig;
 import org.onap.aai.util.AAIConstants;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
 /**
  * The Class CreateWidgetModels.
@@ -74,7 +76,13 @@ public class CreateWidgetModels
                        System.exit(0);
                }
 
-               Loader loader = SpringContextAware.getBean(LoaderFactory.class).createLoaderForVersion(ModelType.MOXY, new SchemaVersion(_apiVersion));
+               AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
+                               "org.onap.aai.config",
+                               "org.onap.aai.setup"
+               );
+
+               LoaderFactory loaderFactory = ctx.getBean(LoaderFactory.class);
+               Loader loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, new SchemaVersion(_apiVersion));
 
                // iterate the collection of resources
 
@@ -91,6 +99,12 @@ public class CreateWidgetModels
                                if (processedWidgets.contains(resource)) {
                                        continue;
                                }
+
+                               Set<String> introspectorProperties = aaiRes.getProperties();
+
+                               if(!(introspectorProperties.contains("model-version-id") && introspectorProperties.contains("model-invariant-id"))){
+                                   System.out.println(aaiRes.getDbName() + " does not contain model properties so skipping");
+                               }
                                processedWidgets.add(resource);
 
                                String widgetName = resource;
index 6e6ba84..5aece21 100644 (file)
@@ -66,14 +66,7 @@ public class URIParser {
        public URIParser(Loader loader, URI uri) {
                this.uri = uri;
 
-               String currentVersion = "v7";
                this.originalLoader = loader;
-               try {
-                       currentVersion = AAIConfig.get("aai.default.api.version");
-               } catch (AAIException e) {
-                       ErrorLogHelper.logException(e);
-               }
-
                //Load the latest version because we need it for cloud region
 
                        this.loader = loader;
@@ -156,10 +149,13 @@ public class URIParser {
                                        }
                                        if (introspector.isContainer()) {
                                                boolean isFinalContainer = i == parts.length-2;
-                                               p.processContainer(introspector, EdgeType.COUSIN, uriKeys, isFinalContainer);
+                                               /*
+                                                * Related-to could be COUSIN OR TREE and in some cases BOTH. So Let EdgeRuleBuilder use all the edgeTypes
+                                                */
+                                               p.processContainer(introspector, EdgeType.ALL, uriKeys, isFinalContainer);
                                        }
                                        previousObj = introspector;
-                                       type = EdgeType.COUSIN;
+                                       type = EdgeType.ALL;
                                        i+=2;
                                        continue;
                                }
@@ -215,7 +211,6 @@ public class URIParser {
                                                        }
                                                }
                                                p.processContainer(introspector, type, uriKeys, isFinalContainer);
-                                               
                                                i++; 
                                        } else {
                                                p.processNamespace(introspector);
index d5faf05..8012229 100644 (file)
@@ -63,11 +63,11 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
         */
        public GraphTraversalBuilder(Loader loader, GraphTraversalSource source) {
                super(loader, source);
-               
+
                traversal = (GraphTraversal<Vertex, E>) __.<E>start();
-               
+
        }
-       
+
        /**
         * Instantiates a new graph traversal builder.
         *
@@ -76,42 +76,42 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
         */
        public GraphTraversalBuilder(Loader loader, GraphTraversalSource source, Vertex start) {
                super(loader, source, start);
-               
+
                traversal = (GraphTraversal<Vertex, E>) __.__(start);
-               
+
        }
-       
+
        /**
         * @{inheritDoc}
         */
        @Override
        public QueryBuilder<Vertex> getVerticesByProperty(String key, Object value) {
-               
+
                // correct value call because the index is registered as an Integer
                traversal.has(key, this.correctObjectType(value));
-               
+
                stepIndex++;
                return (QueryBuilder<Vertex>) this;
        }
-       
+
        /**
         * @{inheritDoc}
         */
        @Override
        public QueryBuilder<Vertex> getVerticesByProperty(final String key, final List<?> values) {
-               
+
                //this is because the index is registered as an Integer
                List<Object> correctedValues = new ArrayList<>();
                for (Object item : values) {
                        correctedValues.add(this.correctObjectType(item));
                }
-               
+
                traversal.has(key, P.within(correctedValues));
-               
+
                stepIndex++;
                return (QueryBuilder<Vertex>) this;
        }
-       
+
        /**
         * @{inheritDoc}
         */
@@ -124,79 +124,79 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                stepIndex++;
                return (QueryBuilder<Vertex>) this;
        }
-       
+
     /**
      * @{inheritDoc}
      */
     @Override
     public QueryBuilder<Vertex> getVerticesByProperty(String key) {
-        
+
         traversal.has(key);
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
      * @{inheritDoc}
      */
     @Override
     public QueryBuilder<Vertex> getVerticesExcludeByProperty(String key) {
-        
+
         traversal.hasNot(key);
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
 
        /**
         * @{inheritDoc}
         */
        @Override
        public QueryBuilder<Vertex> getVerticesExcludeByProperty(String key, Object value) {
-               
+
                // correct value call because the index is registered as an Integer
                traversal.has(key, P.neq(this.correctObjectType(value)));
-               
+
                stepIndex++;
                return (QueryBuilder<Vertex>) this;
        }
-       
+
        /**
         * @{inheritDoc}
         */
        @Override
        public QueryBuilder<Vertex> getVerticesExcludeByProperty(final String key, final List<?> values) {
-               
+
                //this is because the index is registered as an Integer
                List<Object> correctedValues = new ArrayList<>();
                for (Object item : values) {
                        correctedValues.add(this.correctObjectType(item));
                }
-               
+
                traversal.has(key, P.without(correctedValues));
-               
+
                stepIndex++;
                return (QueryBuilder<Vertex>) this;
        }
 
     @Override
     public QueryBuilder<Vertex> getVerticesGreaterThanProperty(final String key, Object value) {
-        
+
         traversal.has(key, P.gte(this.correctObjectType(value)));
-        
+
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     @Override
     public QueryBuilder<Vertex> getVerticesLessThanProperty(final String key, Object value) {
-        
+
         traversal.has(key, P.lte(this.correctObjectType(value)));
-        
+
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
 
        /**
         * @{inheritDoc}
@@ -213,7 +213,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
         */
        @Override
        public QueryBuilder<Vertex> getTypedVerticesByMap(String type, Map<String, String> map) {
-               
+
                for (Map.Entry<String, String> es : map.entrySet()) {
                        traversal.has(es.getKey(), es.getValue());
                        stepIndex++;
@@ -273,7 +273,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                this.createContainerQuery(obj);
                return (QueryBuilder<Vertex>) this;
        }
-       
+
        private void allPropertiesQuery(Introspector obj) {
                Set<String> props = obj.getProperties();
                Set<String> keys = obj.getKeys();
@@ -298,12 +298,12 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                        }
                }
        }
-       
+
        /**
         * @{inheritDoc}
         */
        @Override
-       
+
        public QueryBuilder<Vertex> createContainerQuery(Introspector obj) {
                String type = obj.getChildDBName();
                String abstractType = obj.getMetadata(ObjectMetadata.ABSTRACT);
@@ -319,8 +319,8 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
        }
 
        /**
-        * @throws NoEdgeRuleFoundException 
-        * @throws AAIException 
+        * @throws NoEdgeRuleFoundException
+        * @throws AAIException
         * @{inheritDoc}
         */
        @Override
@@ -423,10 +423,10 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                }
                this.traversal.union(traversals);
                stepIndex++;
-               
+
                return this;
        }
-       
+
        /**
         * @{inheritDoc}
         */
@@ -454,101 +454,101 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
 
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> store(String name) {
-               
+
                this.traversal.store(name);
                stepIndex++;
-               
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> cap(String name) {
                this.traversal.cap(name);
                stepIndex++;
-               
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> unfold() {
                this.traversal.unfold();
                stepIndex++;
-                       
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> dedup() {
-               
+
                this.traversal.dedup();
                stepIndex++;
-               
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> emit() {
-               
+
                this.traversal.emit();
                stepIndex++;
-               
+
                return this;
-               
+
        }
-       
+
        @Override
        public QueryBuilder<E> repeat(QueryBuilder<E> builder) {
-               
+
                this.traversal.repeat((GraphTraversal<Vertex, E>)builder.getQuery());
                stepIndex++;
 
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> until(QueryBuilder<E> builder) {
                this.traversal.until((GraphTraversal<Vertex,E>)builder.getQuery());
                stepIndex++;
-               
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> groupCount() {
                this.traversal.groupCount();
                stepIndex++;
-               
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> both() {
                this.traversal.both();
                stepIndex++;
-               
+
                return this;
        }
-       
+
        @Override
        public QueryBuilder<Tree> tree() {
-               
+
                this.traversal.tree();
                stepIndex++;
-               
+
                return (QueryBuilder<Tree>)this;
        }
-       
+
        @Override
        public QueryBuilder<E> by(String name) {
                this.traversal.by(name);
                stepIndex++;
-               
+
                return this;
        }
-       
+
        /**
         * {@inheritDoc}
         */
@@ -568,72 +568,90 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                stepIndex++;
                return (QueryBuilder<Path>)this;
        }
-       
+
        @Override
        public QueryBuilder<Edge> outE() {
                this.traversal.outE();
                stepIndex++;
                return (QueryBuilder<Edge>)this;
        }
-       
+
        @Override
        public QueryBuilder<Edge> inE() {
                this.traversal.inE();
                stepIndex++;
                return (QueryBuilder<Edge>)this;
        }
-       
+
        @Override
        public QueryBuilder<Vertex> outV() {
                this.traversal.outV();
                stepIndex++;
                return (QueryBuilder<Vertex>)this;
        }
-       
+
        @Override
        public QueryBuilder<Vertex> inV() {
                this.traversal.inV();
                stepIndex++;
                return (QueryBuilder<Vertex>)this;
        }
-       
+
        @Override
        public QueryBuilder<E> as(String name) {
                this.traversal.as(name);
-               
+
                stepIndex++;
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> not(QueryBuilder<E> builder) {
                this.traversal.not(builder.getQuery());
-               
+
                stepIndex++;
                return this;
        }
-       
+
        @Override
        public QueryBuilder<E> select(String name) {
                this.traversal.select(name);
-               
+
+               stepIndex++;
+
+               return this;
+       }
+
+       @Override
+       public QueryBuilder<E> select(String... names) {
+               if(names.length == 1) {
+                       this.traversal.select(names[0]);
+               }
+               else if(names.length == 2) {
+                       this.traversal.select(names[0], names[1]);
+               }
+               else if(names.length > 2){
+                       String[] otherNames = Arrays.copyOfRange(names, 2, names.length);
+                       this.traversal.select(names[0], names[1], otherNames);
+               }
+
                stepIndex++;
-               
+
                return this;
        }
-       
+
        /**
         * Edge query.
         *
         * @param outObj the out type
         * @param inObj the in type
-        * @throws NoEdgeRuleFoundException 
-        * @throws AAIException 
+        * @throws NoEdgeRuleFoundException
+        * @throws AAIException
         */
        private void edgeQueryToVertex(EdgeType type, Introspector outObj, Introspector inObj, List<String> labels) throws AAIException {
                String outType = outObj.getDbName();
                String inType = inObj.getDbName();
-               
+
                if (outObj.isContainer()) {
                        outType = outObj.getChildDBName();
                }
@@ -685,35 +703,35 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                        traversal.out(outLabels.toArray(new String[outLabels.size()]));
                } else if (outLabels.isEmpty() && !inLabels.isEmpty()) {
                        traversal.in(inLabels.toArray(new String[inLabels.size()]));
-               } else {                                
+               } else {
                        traversal.union(__.out(outLabels.toArray(new String[outLabels.size()])), __.in(inLabels.toArray(new String[inLabels.size()])));
                }
-               
+
                stepIndex++;
 
                this.createContainerQuery(inObj);
-               
+
        }
-       
+
        /**
         * Edge query.
         *
         * @param outObj the out type
         * @param inObj the in type
-        * @throws NoEdgeRuleFoundException 
-        * @throws AAIException 
+        * @throws NoEdgeRuleFoundException
+        * @throws AAIException
         */
        private void edgeQuery(EdgeType type, Introspector outObj, Introspector inObj, List<String> labels) throws AAIException {
                String outType = outObj.getDbName();
                String inType = inObj.getDbName();
-               
+
                if (outObj.isContainer()) {
                        outType = outObj.getChildDBName();
                }
                if (inObj.isContainer()) {
                        inType = inObj.getChildDBName();
                }
-               
+
                markParentBoundary();
                Multimap<String, EdgeRule> rules = ArrayListMultimap.create();
                EdgeRuleQuery.Builder qB = new EdgeRuleQuery.Builder(outType, inType).edgeType(type);
@@ -729,7 +747,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                } catch (EdgeRuleNotFoundException e) {
                        throw new NoEdgeRuleFoundException(e);
                }
-               
+
                final List<String> inLabels = new ArrayList<>();
                final List<String> outLabels = new ArrayList<>();
 
@@ -749,11 +767,11 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                        traversal.outE(outLabels.toArray(new String[outLabels.size()]));
                } else if (outLabels.isEmpty() && !inLabels.isEmpty()) {
                        traversal.inE(inLabels.toArray(new String[inLabels.size()]));
-               } else {                                
+               } else {
                        traversal.union(__.outE(outLabels.toArray(new String[outLabels.size()])), __.inE(inLabels.toArray(new String[inLabels.size()])));
                }
        }
-       
+
        @Override
        public QueryBuilder<E> limit(long amount) {
                traversal.limit(amount);
@@ -767,7 +785,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
        public <E2> E2 getQuery() {
                return (E2)this.traversal;
        }
-       
+
        /**
         * @{inheritDoc}
         */
@@ -776,17 +794,17 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
 
                return cloneQueryAtStep(parentStepIndex);
        }
-       
+
        @Override
        public QueryBuilder<E> getContainerQuery() {
-               
+
                if (this.parentStepIndex == 0) {
                        return removeQueryStepsBetween(0, containerStepIndex);
                } else {
                        return cloneQueryAtStep(containerStepIndex);
                }
        }
-       
+
        /**
         * @{inheritDoc}
         */
@@ -794,13 +812,13 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
        public void markParentBoundary() {
                parentStepIndex = stepIndex;
        }
-       
+
        @Override
        public void markContainer() {
                containerStepIndex = stepIndex;
        }
-       
-       
+
+
        /**
         * @{inheritDoc}
         */
@@ -823,7 +841,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
 
        /**
         * end is exclusive
-        * 
+        *
         * @param start
         * @param end
         * @return
@@ -850,19 +868,19 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> {
                if (this.completeTraversal == null) {
                        executeQuery();
                }
-               
+
                return this.completeTraversal.hasNext();
        }
-       
+
        @Override
        public E next() {
                if (this.completeTraversal == null) {
                        executeQuery();
                }
-               
+
                return this.completeTraversal.next();
        }
-       
+
        @Override
        public List<E> toList() {
                if (this.completeTraversal == null) {
index 2cc78f4..43925f4 100644 (file)
@@ -36,7 +36,7 @@ import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.Loader;
-import org.onap.aai.restcore.search.GremlinGroovyShellSingleton;
+import org.onap.aai.restcore.search.GremlinGroovyShell;
 import org.onap.aai.schema.enums.ObjectMetadata;
 import org.onap.aai.edges.EdgeRule;
 import org.onap.aai.edges.EdgeRuleQuery;
@@ -53,7 +53,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
 
     private static final String ARGUMENT2 = "#!#argument#!#";
     private static final String HAS = ".has('";
-    private GremlinGroovyShellSingleton gremlinGroovy = GremlinGroovyShellSingleton.getInstance();
+    private GremlinGroovyShell gremlinGroovy = new GremlinGroovyShell();
     private GraphTraversal<?, ?> completeTraversal = null;
     protected List<String> list = null;
 
@@ -103,6 +103,16 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         return (QueryBuilder<Vertex>) this;
     }
 
+    /**
+     * @{inheritDoc}
+     */
+    @Override
+    public QueryBuilder<Vertex> getVerticesByNumberProperty(String key, Object value) {
+        list.add(HAS + key + "', " + value + ")");
+        stepIndex++;
+        return (QueryBuilder<Vertex>) this;
+    }
+
     @Override
     public QueryBuilder<Vertex> getVerticesByBooleanProperty(String key, Object value) {
         boolean bValue = false;
@@ -139,7 +149,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
      * @{inheritDoc}
      */
@@ -150,7 +160,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
      * @{inheritDoc}
      */
@@ -199,7 +209,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
      * @{inheritDoc}
      */
@@ -221,7 +231,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     @Override
     public QueryBuilder<Vertex> getVerticesGreaterThanProperty(String key, Object value) {
         String predicate = "P.gte(#!#argument1#!#)";
@@ -236,7 +246,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     @Override
     public QueryBuilder<Vertex> getVerticesLessThanProperty(String key, Object value) {
         String predicate = "P.lte(#!#argument1#!#)";
@@ -251,10 +261,10 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
 
 
-    
+
+
     /**
      * @{inheritDoc}
      */
@@ -263,13 +273,13 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         //TODO
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
      * @{inheritDoc}
      */
     @Override
     public QueryBuilder<Vertex> getTypedVerticesByMap(String type, Map<String, String> map) {
-        
+
         for (Map.Entry<String, String> es : map.entrySet()) {
             list.add(HAS + es.getKey() + "', '" + es.getValue() + "')");
             stepIndex++;
@@ -278,7 +288,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
      * @{inheritDoc}
      */
@@ -287,16 +297,16 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         Set<String> keys = obj.getKeys();
 
         for (String key : keys) {
-            
+
             this.getVerticesByProperty(key, obj.<Object>getValue(key));
-            
-        }        
+
+        }
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     /**
-     * @throws NoEdgeRuleFoundException 
-     * @throws AAIException 
+     * @throws NoEdgeRuleFoundException
+     * @throws AAIException
      * @{inheritDoc}
      */
     @Override
@@ -311,7 +321,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         }
         this.edgeQueryToVertex(type, parentName, childName, null);
         return this;
-            
+
     }
 
     @Override
@@ -390,8 +400,14 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
             } else {
                 if (Direction.IN.equals(rule.getDirection())) {
                     inLabels.add(rule.getLabel());
+                    if(inType.equals(outType)) {//code to handle when a type edges to itself, to add both in and out
+                        outLabels.add(rule.getLabel());
+                    }
                 } else {
                     outLabels.add(rule.getLabel());
+                    if(inType.equals(outType)) {//code to handle when a type edges to itself, to add both in and out
+                        inLabels.add(rule.getLabel());
+                    }
                 }
             }
         }
@@ -408,16 +424,16 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         list.add(HAS + AAIProperties.NODE_TYPE + "', '" + inType + "')");
         stepIndex++;
-        
+
     }
-    
+
     /**
      * Edge query.
      *
      * @param outType the out type
      * @param inType the in type
-     * @throws NoEdgeRuleFoundException 
-     * @throws AAIException 
+     * @throws NoEdgeRuleFoundException
+     * @throws AAIException
      */
     private void edgeQuery(EdgeType type, String outType, String inType, List<String> labels) throws AAIException {
         markParentBoundary();
@@ -434,7 +450,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         } catch (EdgeRuleNotFoundException e) {
             throw new NoEdgeRuleFoundException(e);
         }
-        
+
         final List<String> inLabels = new ArrayList<>();
         final List<String> outLabels = new ArrayList<>();
 
@@ -459,9 +475,9 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         } else {
             list.add(".union(__.inE('" + String.join("','", inLabels) + "')" + ", __.outE('" + String.join("','", outLabels) + "'))");
         }
-        
+
         stepIndex++;
-        
+
     }
     @Override
     public QueryBuilder<E> limit(long amount) {
@@ -486,7 +502,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
             command.append(Joiner.on(",").join(wrapped));
             command.append(")");
             list.add(".has('aai-node-type', " + command + ")");
-            
+
         } else {
             list.add(".has('aai-node-type', '" + type + "')");
         }
@@ -494,7 +510,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         this.markContainer();
         return (QueryBuilder<Vertex>) this;
     }
-    
+
     @Override
     public QueryBuilder<E> union(QueryBuilder<E>... builder) {
         markParentBoundary();
@@ -508,10 +524,10 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         command.append(")");
         list.add(command.toString());
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> where(QueryBuilder<E>... builder) {
         markParentBoundary();
@@ -521,8 +537,8 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
             stepIndex++;
         }
         list.addAll(traversals);
-        
-        
+
+
         return this;
     }
 
@@ -542,95 +558,95 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
 
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> store(String name) {
         this.list.add(".store('"+ name + "')");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> cap(String name) {
         this.list.add(".cap('"+ name + "')");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> unfold() {
         this.list.add(".unfold()");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> dedup() {
         this.list.add(".dedup()");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> emit() {
         this.list.add(".emit()");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> repeat(QueryBuilder<E> builder) {
         this.list.add(".repeat(__" + builder.getQuery()  + ")");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> until(QueryBuilder<E> builder) {
         this.list.add(".until(__" + builder.getQuery() + ")");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> groupCount() {
         this.list.add(".groupCount()");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> both() {
         this.list.add(".both()");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<Tree> tree() {
         this.list.add(".tree()");
         stepIndex++;
-        
+
         return (QueryBuilder<Tree>)this;
     }
-    
+
     @Override
     public QueryBuilder<E> by(String name) {
         this.list.add(".by('"+ name + "')");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     /**
      * {@inheritDoc}
      */
@@ -650,60 +666,76 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         stepIndex++;
         return (QueryBuilder<Path>)this;
     }
-    
+
     @Override
     public QueryBuilder<Edge> outE() {
         this.list.add(".outE()");
         stepIndex++;
-        
+
         return (QueryBuilder<Edge>)this;
     }
-    
+
     @Override
     public QueryBuilder<Edge> inE() {
         this.list.add(".inE()");
         stepIndex++;
-        
+
         return (QueryBuilder<Edge>)this;
     }
-    
+
     @Override
     public QueryBuilder<Vertex> outV() {
         this.list.add(".outV()");
         stepIndex++;
-        
+
         return (QueryBuilder<Vertex>)this;
     }
-    
+
     @Override
     public QueryBuilder<Vertex> inV() {
         this.list.add(".inV()");
         stepIndex++;
-        
+
         return (QueryBuilder<Vertex>)this;
     }
-    
+
     @Override
     public QueryBuilder<E> not(QueryBuilder<E> builder) {
         this.list.add(".not(" + "__" + builder.getQuery() + ")");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> as(String name) {
         this.list.add(".as('" + name + "')");
         stepIndex++;
-        
+
         return this;
     }
-    
+
     @Override
     public QueryBuilder<E> select(String name) {
         this.list.add(".select('" + name + "')");
         stepIndex++;
-        
+
+        return this;
+    }
+
+    @Override
+    public QueryBuilder<E> select(String... names) {
+       String stepString = ".select('";
+       for(int i = 0; i<names.length; i++) {
+               stepString = stepString + names[i] +"'";
+               if(i!=(names.length-1)) {
+                       stepString = stepString + ",'";
+               }
+       }
+       stepString = stepString + ")";
+       this.list.add(stepString);
+        stepIndex++;
+
         return this;
     }
     /**
@@ -713,26 +745,26 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
     public QueryBuilder<E> getParentQuery() {
         return cloneQueryAtStep(parentStepIndex);
     }
-    
+
     @Override
     public QueryBuilder<E> getContainerQuery() {
         return cloneQueryAtStep(containerStepIndex);
     }
-    
+
     /**
      * @{inheritDoc}
      */
     @Override
     public <T2> T2 getQuery() {
         StringBuilder sb = new StringBuilder();
-        
+
         for (String piece : this.list) {
             sb.append(piece);
         }
-        
+
         return (T2)sb.toString();
     }
-    
+
     /**
      * @{inheritDoc}
      */
@@ -740,12 +772,12 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
     public void markParentBoundary() {
         parentStepIndex = stepIndex;
     }
-    
+
     @Override
     public void markContainer() {
         this.containerStepIndex = stepIndex;
     }
-    
+
     /**
      * @{inheritDoc}
      */
@@ -765,7 +797,7 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
     protected int getStepIndex() {
         return stepIndex;
     }
-    
+
     private void executeQuery() {
         String queryString = "g" + Joiner.on("").join(list);
         Map<String, Object> params = new HashMap<>();
@@ -781,25 +813,25 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
         if (this.completeTraversal == null) {
             executeQuery();
         }
-        
+
         return this.completeTraversal.hasNext();
     }
-    
+
     @Override
     public E next() {
         if (this.completeTraversal == null) {
             executeQuery();
         }
-        
+
         return (E)this.completeTraversal.next();
     }
-    
+
     @Override
     public List<E> toList() {
         if (this.completeTraversal == null) {
             executeQuery();
         }
-        
+
         return (List<E>)this.completeTraversal.toList();
     }
 
@@ -808,5 +840,5 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> {
 
         return (QueryBuilder<Edge>)this;
     }
-    
+
 }
index f4ffac0..777204f 100644 (file)
@@ -293,6 +293,40 @@ public abstract class QueryBuilder<E> implements Iterator<E> {
                return createEdgeTraversal(type, out, in);
        }
 
+       /**
+        *
+        * @param edgeType
+        * @param outNodeType
+        * @param inNodeType
+        * @return
+        * @throws AAIException
+        */
+       public QueryBuilder<Vertex> createEdgeTraversal(String edgeType, String outNodeType, String inNodeType) throws AAIException {
+               /*
+                * When the optional parameter edgetype is sent it is a string that needs to be converted to Enum
+                */
+               EdgeType type = EdgeType.valueOf(edgeType);
+               Introspector out = loader.introspectorFromName(outNodeType);
+               Introspector in = loader.introspectorFromName(inNodeType);
+
+               return createEdgeTraversal(type, out, in);
+       }
+       
+       /**
+        *
+        * @param MissingOptionalParameter
+        * @param outNodeType
+        * @param inNodeType
+        * @return
+        * @throws AAIException
+        */
+       public QueryBuilder<Vertex> createEdgeTraversal(MissingOptionalParameter edgeType, String outNodeType, String inNodeType) throws AAIException {
+               /*
+                * When no optional parameter edgetype is sent get all edges between the 2 nodetypes
+                */
+               return this.createEdgeTraversal(outNodeType, inNodeType);       
+       }
+       
        public QueryBuilder<Vertex> createEdgeTraversal(String outNodeType, String inNodeType) throws AAIException {
 
                Introspector out = loader.introspectorFromName(outNodeType);
@@ -506,6 +540,7 @@ public abstract class QueryBuilder<E> implements Iterator<E> {
        public abstract QueryBuilder<E> not(QueryBuilder<E> builder);
        public abstract QueryBuilder<E> as(String name);
        public abstract QueryBuilder<E> select(String name);
+       public abstract QueryBuilder<E> select(String... names);
        public abstract QueryBuilder<E> until(QueryBuilder<E> builder);
        public abstract QueryBuilder<E> groupCount();
        public abstract QueryBuilder<E> by(String name);
@@ -574,4 +609,16 @@ public abstract class QueryBuilder<E> implements Iterator<E> {
        protected void setEdgeIngestor(EdgeIngestor ei) {
                this.edgeRules = ei;
        }
+
+       public QueryBuilder<Vertex> getVerticesByNumberProperty(String key, Object value) {
+               return getVerticesByProperty(key, value);
+       }
+
+    public QueryBuilder<Vertex> getVerticesByNumberProperty(String key) {
+       return getVerticesByProperty(key);
+    }
+    
+    public QueryBuilder<Vertex> getVerticesByNumberProperty(String key, MissingOptionalParameter value) {
+               return getVerticesByProperty(key, value);
+       }
 }
index bd7f1b9..6f551de 100644 (file)
@@ -8,7 +8,7 @@
  * 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
+ *    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,
@@ -53,6 +53,8 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.janusgraph.core.JanusGraphException;
 import org.javatuples.Pair;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.dbmap.DBConnectionType;
 import org.onap.aai.domain.responseMessage.AAIResponseMessage;
@@ -94,9 +96,9 @@ public class HttpEntry {
        private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(HttpEntry.class);
        private static final String TARGET_ENTITY = "DB";
 
-       private  ModelType introspectorFactoryType;
+       private ModelType introspectorFactoryType;
 
-       private  QueryStyle queryStyle;
+       private QueryStyle queryStyle;
 
        private SchemaVersion version;
 
@@ -123,7 +125,7 @@ public class HttpEntry {
        @Value("${schema.uri.base.path}")
        private String basePath;
 
-       private UEBNotification notification;
+       private UEBNotification notification;
 
        /**
         * Instantiates a new http entry.
@@ -136,13 +138,13 @@ public class HttpEntry {
                this.queryStyle = queryStyle;
        }
 
-       public HttpEntry setHttpEntryProperties(SchemaVersion version, DBConnectionType connectionType){
+       public HttpEntry setHttpEntryProperties(SchemaVersion version, DBConnectionType connectionType) {
                this.version = version;
                this.loader = loaderFactory.createLoaderForVersion(introspectorFactoryType, version);
                this.dbEngine = new JanusGraphDBEngine(
-                               queryStyle,
-                               connectionType,
-                               loader);
+                       queryStyle,
+                       connectionType,
+                       loader);
 
                getDbEngine().startTransaction();
                this.notification = new UEBNotification(loader, loaderFactory, schemaVersions);
@@ -150,13 +152,13 @@ public class HttpEntry {
        }
 
 
-        public HttpEntry setHttpEntryProperties(SchemaVersion version, DBConnectionType connectionType, UEBNotification notification){
+       public HttpEntry setHttpEntryProperties(SchemaVersion version, DBConnectionType connectionType, UEBNotification notification) {
                this.version = version;
                this.loader = loaderFactory.createLoaderForVersion(introspectorFactoryType, version);
                this.dbEngine = new JanusGraphDBEngine(
-                               queryStyle,
-                               connectionType,
-                               loader);
+                       queryStyle,
+                       connectionType,
+                       loader);
 
                this.notification = notification;
                //start transaction on creation
@@ -210,7 +212,7 @@ public class HttpEntry {
                return dbEngine;
        }
 
-       public Pair<Boolean, List<Pair<URI, Response>>> process (List<DBRequest> requests, String sourceOfTruth) throws AAIException {
+       public Pair<Boolean, List<Pair<URI, Response>>> process(List<DBRequest> requests, String sourceOfTruth) throws AAIException {
                return this.process(requests, sourceOfTruth, true);
        }
 
@@ -221,24 +223,32 @@ public class HttpEntry {
         *
         * @return a boolean true/false of whether the user requested paginated results
         */
-       public boolean isPaginated(){
+       public boolean isPaginated() {
                return this.paginationBucket > -1 && this.paginationIndex > -1;
        }
 
+       /**
+        * Returns the pagination size
+        * @return integer of the size of results to be returned when paginated
+        */
+       public int getPaginationBucket() {
+               return this.paginationBucket;
+       }
+
        /**
         * Setter for the pagination bucket variable which stores in this object the size of results to return
         * @param pb
         */
-       public void setPaginationBucket(int pb){
+       public void setPaginationBucket(int pb) {
                this.paginationBucket = pb;
        }
 
        /**
-        * Returns the pagination size
-        * @return integer of the size of results to be returned when paginated
+        * Getter to return the pagination index requested by the user when requesting paginated results
+        * @return
         */
-       public int getPaginationBucket(){
-               return this.paginationBucket;
+       public int getPaginationIndex() {
+               return this.paginationIndex;
        }
 
        /**
@@ -246,32 +256,24 @@ public class HttpEntry {
         * paginated
         * @param pi
         */
-       public void setPaginationIndex(int pi){
-               if(pi == 0){
+       public void setPaginationIndex(int pi) {
+               if (pi == 0) {
                        pi = 1;
                }
                this.paginationIndex = pi;
        }
 
-       /**
-        * Getter to return the pagination index requested by the user when requesting paginated results
-        * @return
-        */
-       public int getPaginationIndex(){
-               return this.paginationIndex;
-       }
-
        /**
         * Sets the total vertices variables and calculates the amount of pages based on size and total vertices
         * @param totalVertices
         * @param paginationBucketSize
         */
-       public void setTotalsForPaging(int totalVertices, int paginationBucketSize){
+       public void setTotalsForPaging(int totalVertices, int paginationBucketSize) {
                this.totalVertices = totalVertices;
                //set total number of buckets equal to full pages
-               this.totalPaginationBuckets = totalVertices/paginationBucketSize;
+               this.totalPaginationBuckets = totalVertices / paginationBucketSize;
                //conditionally add a page for the remainder
-               if(totalVertices % paginationBucketSize > 0){
+               if (totalVertices % paginationBucketSize > 0) {
                        this.totalPaginationBuckets++;
                }
        }
@@ -279,7 +281,7 @@ public class HttpEntry {
        /**
         * @return the total amount of pages
         */
-       public int getTotalPaginationBuckets(){
+       public int getTotalPaginationBuckets() {
                return this.totalPaginationBuckets;
        }
 
@@ -287,7 +289,7 @@ public class HttpEntry {
         *
         * @return the total number of vertices when paginated
         */
-       public int getTotalVertices(){
+       public int getTotalVertices() {
                return this.totalVertices;
        }
 
@@ -299,7 +301,7 @@ public class HttpEntry {
         * @return the pair
         * @throws AAIException the AAI exception
         */
-       public Pair<Boolean, List<Pair<URI, Response>>> process (List<DBRequest> requests, String sourceOfTruth, boolean enableResourceVersion) throws AAIException {
+       public Pair<Boolean, List<Pair<URI, Response>>> process(List<DBRequest> requests, String sourceOfTruth, boolean enableResourceVersion) throws AAIException {
 
                DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, sourceOfTruth);
                String methodName = "process";
@@ -310,7 +312,7 @@ public class HttpEntry {
                String transactionId = null;
                int depth = AAIProperties.MAXIMUM_DEPTH;
                Format format = null;
-               List<Pair<URI,Response>> responses = new ArrayList<>();
+               List<Pair<URI, Response>> responses = new ArrayList<>();
                MultivaluedMap<String, String> params = null;
                HttpMethod method = null;
                String uriTemp = "";
@@ -339,11 +341,11 @@ public class HttpEntry {
                                                LoggingContext.startTime();
                                                List<Vertex> vertTemp;
                                                List<Vertex> vertices;
-                                               if(this.isPaginated()) {
+                                               if (this.isPaginated()) {
                                                        vertTemp = query.getQueryBuilder().toList();
                                                        this.setTotalsForPaging(vertTemp.size(), this.paginationBucket);
                                                        vertices = vertTemp.subList(((this.paginationIndex - 1) * this.paginationBucket), Math.min((this.paginationBucket * this.paginationIndex), vertTemp.size()));
-                                               }else{
+                                               } else {
                                                        vertices = query.getQueryBuilder().toList();
                                                }
                                                boolean isNewVertex = false;
@@ -364,7 +366,7 @@ public class HttpEntry {
                                                if (cleanUp == null) {
                                                        cleanUp = "false";
                                                }
-                                               if (vertices.size() > 1 && processSingle && !method.equals(HttpMethod.GET)) {
+                                               if (vertices.size() > 1 && processSingle && !(method.equals(HttpMethod.GET) || method.equals(HttpMethod.GET_RELATIONSHIP))) {
                                                        if (method.equals(HttpMethod.DELETE)) {
                                                                LoggingContext.restoreIfPossible();
                                                                throw new AAIException("AAI_6138");
@@ -374,7 +376,7 @@ public class HttpEntry {
                                                        }
                                                }
                                                if (method.equals(HttpMethod.PUT)) {
-                                                       String resourceVersion = (String)obj.getValue("resource-version");
+                                                       String resourceVersion = (String) obj.getValue("resource-version");
                                                        if (vertices.isEmpty()) {
                                                                if (enableResourceVersion) {
                                                                        serializer.verifyResourceVersion("create", query.getResultType(), "", resourceVersion, obj.getURI());
@@ -399,17 +401,17 @@ public class HttpEntry {
                                                        v = vertices.get(0);
                                                }
                                                HashMap<String, Introspector> relatedObjects = new HashMap<>();
+                                               String nodeOnly = params.getFirst("nodes-only");
+                                               boolean isNodeOnly = nodeOnly != null;
                                                switch (method) {
                                                        case GET:
-                                                               String nodeOnly = params.getFirst("nodes-only");
-                                                               boolean isNodeOnly = nodeOnly != null;
 
                                                                if (format == null) {
                                                                        obj = this.getObjectFromDb(vertices, serializer, query, obj, request.getUri(), depth, isNodeOnly, cleanUp);
 
 
                                                                        LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
-                                                                       LOGGER.info ("Completed");
+                                                                       LOGGER.info("Completed");
                                                                        LoggingContext.restoreIfPossible();
 
                                                                        if (obj != null) {
@@ -424,11 +426,39 @@ public class HttpEntry {
                                                                        }
                                                                } else {
                                                                        FormatFactory ff = new FormatFactory(loader, serializer, schemaVersions, basePath + "/");
-                                                                       Formatter formatter =  ff.get(format, params);
+                                                                       Formatter formatter = ff.get(format, params);
                                                                        result = formatter.output(vertices.stream().map(vertex -> (Object) vertex).collect(Collectors.toList())).toString();
                                                                        status = Status.OK;
                                                                }
 
+                                                               break;
+                                                       case GET_RELATIONSHIP:
+                                                               if (format == null) {
+                                                                       obj = this.getRelationshipObjectFromDb(vertices, serializer, query, request.getInfo().getRequestUri());
+
+                                                                       LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
+                                                                       LOGGER.info("Completed");
+                                                                       LoggingContext.restoreIfPossible();
+
+                                                                       if (obj != null) {
+                                                                               status = Status.OK;
+                                                                               MarshallerProperties properties;
+                                                                               if (!request.getMarshallerProperties().isPresent()) {
+                                                                                       properties = new MarshallerProperties.Builder(org.onap.aai.restcore.MediaType.getEnum(outputMediaType)).build();
+                                                                               } else {
+                                                                                       properties = request.getMarshallerProperties().get();
+                                                                               }
+                                                                               result = obj.marshal(properties);
+                                                                       } else {
+                                                                               String msg = createRelationshipNotFoundMessage(query.getResultType(), request.getUri());
+                                                                               throw new AAIException("AAI_6149", msg);
+                                                                       }
+                                                               } else {
+                                                                       FormatFactory ff = new FormatFactory(loader, serializer, schemaVersions, basePath + "/");
+                                                                       Formatter formatter = ff.get(format, params);
+                                                                       result = formatter.output(vertices.stream().map(vertex -> (Object) vertex).collect(Collectors.toList())).toString();
+                                                                       status = Status.OK;
+                                                               }
                                                                break;
                                                        case PUT:
                                                                response = this.invokeExtension(dbEngine, this.dbEngine.tx(), method, request, sourceOfTruth, version, loader, obj, uri, true);
@@ -445,9 +475,9 @@ public class HttpEntry {
                                                                if (query.isDependent()) {
                                                                        relatedObjects = this.getRelatedObjects(serializer, queryEngine, v, obj, this.loader);
                                                                }
-                                                               LoggingContext.elapsedTime((long)serializer.getDBTimeMsecs() +
-                                                                               (long)queryEngine.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
-                                                               LOGGER.info ("Completed ");
+                                                               LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs() +
+                                                                       (long) queryEngine.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
+                                                               LOGGER.info("Completed ");
                                                                LoggingContext.restoreIfPossible();
                                                                notification.createNotificationEvent(transactionId, sourceOfTruth, status, uri, obj, relatedObjects, basePath);
 
@@ -457,14 +487,14 @@ public class HttpEntry {
                                                                this.invokeExtension(dbEngine, this.dbEngine.tx(), method, request, sourceOfTruth, version, loader, obj, uri, true);
                                                                serializer.createEdge(obj, v);
 
-                                                               LoggingContext.elapsedTime((long)serializer.getDBTimeMsecs(),TimeUnit.MILLISECONDS);
-                                                               LOGGER.info ("Completed");
+                                                               LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
+                                                               LOGGER.info("Completed");
                                                                LoggingContext.restoreIfPossible();
                                                                status = Status.OK;
                                                                notification.createNotificationEvent(transactionId, sourceOfTruth, status, new URI(uri.toString().replace("/relationship-list/relationship", "")), serializer.getLatestVersionView(v), relatedObjects, basePath);
                                                                break;
                                                        case MERGE_PATCH:
-                                                               Introspector existingObj  = loader.introspectorFromName(obj.getDbName());
+                                                               Introspector existingObj = loader.introspectorFromName(obj.getDbName());
                                                                existingObj = this.getObjectFromDb(vertices, serializer, query, existingObj, request.getUri(), 0, false, cleanUp);
                                                                String existingJson = existingObj.marshal(false);
                                                                String newJson;
@@ -493,14 +523,14 @@ public class HttpEntry {
                                                                        if (query.isDependent()) {
                                                                                relatedObjects = this.getRelatedObjects(serializer, queryEngine, v, patchedObj, this.loader);
                                                                        }
-                                                                       LoggingContext.elapsedTime((long)serializer.getDBTimeMsecs() +
-                                                                                       (long)queryEngine.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
-                                                                       LOGGER.info ("Completed");
+                                                                       LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs() +
+                                                                               (long) queryEngine.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
+                                                                       LOGGER.info("Completed");
                                                                        LoggingContext.restoreIfPossible();
                                                                        notification.createNotificationEvent(transactionId, sourceOfTruth, status, uri, patchedObj, relatedObjects, basePath);
                                                                } catch (IOException | JsonPatchException e) {
 
-                                                                       LOGGER.info ("Caught exception: " + e.getMessage());
+                                                                       LOGGER.info("Caught exception: " + e.getMessage());
                                                                        LoggingContext.restoreIfPossible();
                                                                        throw new AAIException("AAI_3000", "could not perform patch operation");
                                                                }
@@ -530,7 +560,7 @@ public class HttpEntry {
                                                                Map<String, URI> uriMap = new HashMap<>();
                                                                Map<String, HashMap<String, Introspector>> deleteRelatedObjects = new HashMap<>();
 
-                                                               if(isDelVerticesPresent){
+                                                               if (isDelVerticesPresent) {
                                                                        deleteObjects = this.buildIntrospectorObjects(serializer, deletableVertices);
 
                                                                        uriMap = this.buildURIMap(serializer, deleteObjects);
@@ -541,9 +571,9 @@ public class HttpEntry {
                                                                serializer.delete(v, deletableVertices, resourceVersion, enableResourceVersion);
                                                                this.invokeExtension(dbEngine, this.dbEngine.tx(), method, request, sourceOfTruth, version, loader, obj, uri, false);
 
-                                                               LoggingContext.elapsedTime((long)serializer.getDBTimeMsecs() +
-                                                                               (long)queryEngine.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
-                                                               LOGGER.info ("Completed");
+                                                               LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs() +
+                                                                       (long) queryEngine.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
+                                                               LOGGER.info("Completed");
                                                                LoggingContext.restoreIfPossible();
                                                                status = Status.NO_CONTENT;
                                                                notification.createNotificationEvent(transactionId, sourceOfTruth, status, uri, obj, relatedObjects, basePath);
@@ -552,9 +582,9 @@ public class HttpEntry {
                                                                 * Notify delete-other-v candidates
                                                                 */
 
-                                                               if(isDelVerticesPresent){
+                                                               if (isDelVerticesPresent) {
                                                                        this.buildNotificationEvent(sourceOfTruth, status, transactionId, notification, deleteObjects,
-                                                                       uriMap, deleteRelatedObjects, basePath);
+                                                                               uriMap, deleteRelatedObjects, basePath);
                                                                }
 
                                                                break;
@@ -562,8 +592,8 @@ public class HttpEntry {
                                                                serializer.touchStandardVertexProperties(v, false);
                                                                serializer.deleteEdge(obj, v);
 
-                                                               LoggingContext.elapsedTime((long)serializer.getDBTimeMsecs(),TimeUnit.MILLISECONDS);
-                                                               LOGGER.info ("Completed");
+                                                               LoggingContext.elapsedTime((long) serializer.getDBTimeMsecs(), TimeUnit.MILLISECONDS);
+                                                               LOGGER.info("Completed");
                                                                LoggingContext.restoreIfPossible();
                                                                status = Status.NO_CONTENT;
                                                                notification.createNotificationEvent(transactionId, sourceOfTruth, Status.OK, new URI(uri.toString().replace("/relationship-list/relationship", "")), serializer.getLatestVersionView(v), relatedObjects, basePath);
@@ -576,40 +606,42 @@ public class HttpEntry {
                                                /* temporarily adding vertex id to the headers
                                                 * to be able to use for testing the vertex id endpoint functionality
                                                 * since we presently have no other way of generating those id urls
-                                               */
+                                                */
                                                if (response == null && v != null && (
                                                        method.equals(HttpMethod.PUT)
-                                                       || method.equals(HttpMethod.GET)
-                                                       || method.equals(HttpMethod.MERGE_PATCH))
-                                               ) {
+                                                               || method.equals(HttpMethod.GET)
+                                                               || method.equals(HttpMethod.MERGE_PATCH)
+                                                               || method.equals(HttpMethod.GET_RELATIONSHIP))
+
+                                                       ) {
                                                        String myvertid = v.id().toString();
-                                                       if(this.isPaginated()){
+                                                       if (this.isPaginated()) {
                                                                response = Response.status(status)
-                                                                               .header("vertex-id", myvertid)
-                                                                               .header("total-results", this.getTotalVertices())
-                                                                               .header("total-pages", this.getTotalPaginationBuckets())
-                                                                               .entity(result)
-                                                                               .type(outputMediaType).build();
-                                                       }else {
+                                                                       .header("vertex-id", myvertid)
+                                                                       .header("total-results", this.getTotalVertices())
+                                                                       .header("total-pages", this.getTotalPaginationBuckets())
+                                                                       .entity(result)
+                                                                       .type(outputMediaType).build();
+                                                       } else {
                                                                response = Response.status(status)
-                                                                               .header("vertex-id", myvertid)
-                                                                               .entity(result)
-                                                                               .type(outputMediaType).build();
+                                                                       .header("vertex-id", myvertid)
+                                                                       .entity(result)
+                                                                       .type(outputMediaType).build();
                                                        }
                                                } else if (response == null) {
                                                        response = Response.status(status)
-                                                                       .type(outputMediaType).build();
+                                                               .type(outputMediaType).build();
                                                } else {
                                                        //response already set to something
                                                }
-                                               Pair<URI,Response> pairedResp = Pair.with(request.getUri(), response);
+                                               Pair<URI, Response> pairedResp = Pair.with(request.getUri(), response);
                                                responses.add(pairedResp);
                                                //break out of retry loop
                                                break;
                                        } catch (JanusGraphException e) {
                                                this.dbEngine.rollback();
 
-                                               LOGGER.info ("Caught exception: " + e.getMessage());
+                                               LOGGER.info("Caught exception: " + e.getMessage());
                                                LoggingContext.restoreIfPossible();
                                                AAIException ex = new AAIException("AAI_6142", e);
                                                ErrorLogHelper.logException(ex);
@@ -630,10 +662,10 @@ public class HttpEntry {
                                templateVars.addAll(e.getTemplateVars());
                                ErrorLogHelper.logException(e);
                                response = Response
-                                               .status(e.getErrorObject().getHTTPResponseCode())
-                                               .entity(ErrorLogHelper.getRESTAPIErrorResponse(request.getHeaders().getAcceptableMediaTypes(), e, templateVars))
-                                               .build();
-                               Pair<URI,Response> pairedResp = Pair.with(request.getUri(), response);
+                                       .status(e.getErrorObject().getHTTPResponseCode())
+                                       .entity(ErrorLogHelper.getRESTAPIErrorResponse(request.getHeaders().getAcceptableMediaTypes(), e, templateVars))
+                                       .build();
+                               Pair<URI, Response> pairedResp = Pair.with(request.getUri(), response);
                                responses.add(pairedResp);
                                continue;
                        } catch (Exception e) {
@@ -645,9 +677,9 @@ public class HttpEntry {
                                templateVars.add(request.getUri().getPath().toString());
                                ErrorLogHelper.logException(ex);
                                response = Response
-                                               .status(ex.getErrorObject().getHTTPResponseCode())
-                                               .entity(ErrorLogHelper.getRESTAPIErrorResponse(request.getHeaders().getAcceptableMediaTypes(), ex, templateVars))
-                                               .build();
+                                       .status(ex.getErrorObject().getHTTPResponseCode())
+                                       .entity(ErrorLogHelper.getRESTAPIErrorResponse(request.getHeaders().getAcceptableMediaTypes(), ex, templateVars))
+                                       .build();
                                Pair<URI, Response> pairedResp = Pair.with(request.getUri(), response);
                                responses.add(pairedResp);
                                continue;
@@ -664,7 +696,7 @@ public class HttpEntry {
         * @param mediaTypeList the media type list
         * @return the media type
         */
-       private String getMediaType(List <MediaType> mediaTypeList) {
+       private String getMediaType(List<MediaType> mediaTypeList) {
                String mediaType = MediaType.APPLICATION_JSON;  // json is the default
                for (MediaType mt : mediaTypeList) {
                        if (MediaType.APPLICATION_XML_TYPE.isCompatible(mt)) {
@@ -708,6 +740,44 @@ public class HttpEntry {
 
        }
 
+       /**
+        * Gets the object from db.
+        *
+        * @param serializer the serializer
+        * @param query the query
+        * @param obj the obj
+        * @param uri the uri
+        * @param depth the depth
+        * @param cleanUp the clean up
+        * @return the object from db
+        * @throws AAIException the AAI exception
+        * @throws IllegalAccessException the illegal access exception
+        * @throws IllegalArgumentException the illegal argument exception
+        * @throws InvocationTargetException the invocation target exception
+        * @throws SecurityException the security exception
+        * @throws InstantiationException the instantiation exception
+        * @throws NoSuchMethodException the no such method exception
+        * @throws UnsupportedEncodingException the unsupported encoding exception
+        * @throws MalformedURLException the malformed URL exception
+        * @throws AAIUnknownObjectException
+        * @throws URISyntaxException
+        */
+       private Introspector getRelationshipObjectFromDb(List<Vertex> results, DBSerializer serializer, QueryParser query, URI uri) throws AAIException, IllegalArgumentException, SecurityException, UnsupportedEncodingException, AAIUnknownObjectException {
+
+               //nothing found
+               if (results.isEmpty()) {
+                       String msg = createNotFoundMessage(query.getResultType(), uri);
+                       throw new AAIException("AAI_6114", msg);
+               }
+
+               if (results.size() > 1) {
+                       throw new AAIException("AAI_6148", uri.getPath());
+               }
+
+               Vertex v = results.get(0);
+               return serializer.dbToRelationshipObject(v);
+       }
+
        /**
         * Invoke extension.
         *
@@ -748,11 +818,11 @@ public class HttpEntry {
 
                ExtensionController ext = new ExtensionController();
                ext.runExtension(aaiExtMap.getApiVersion(),
-                               extensionInformation.getNamespace(),
-                               extensionInformation.getTopObject(),
-                               extensionInformation.getMethodName(httpMethod, isPreprocess),
-                               aaiExtMap,
-                               isPreprocess);
+                       extensionInformation.getNamespace(),
+                       extensionInformation.getTopObject(),
+                       extensionInformation.getMethodName(httpMethod, isPreprocess),
+                       aaiExtMap,
+                       isPreprocess);
 
                if (aaiExtMap.getPrecheckAddedList().size() > 0) {
                        response = notifyOnSkeletonCreation(aaiExtMap, obj, request.getHeaders());
@@ -793,12 +863,12 @@ public class HttpEntry {
                        }
                        templateVars.add(StringUtils.join(keys, ", "));
                        exceptionList.put(new AAIException("AAI_0004", msg.getAaiResponseMessageResourceType()),
-                                       templateVars);
+                               templateVars);
                }
                response = Response
-                               .status(Status.ACCEPTED).entity(ErrorLogHelper
-                                               .getRESTAPIInfoResponse(headers.getAcceptableMediaTypes(), exceptionList))
-                                               .build();
+                       .status(Status.ACCEPTED).entity(ErrorLogHelper
+                               .getRESTAPIInfoResponse(headers.getAcceptableMediaTypes(), exceptionList))
+                       .build();
 
                return response;
        }
@@ -817,6 +887,20 @@ public class HttpEntry {
                return msg;
        }
 
+       /**
+        * Creates the not found message.
+        *
+        * @param resultType the result type
+        * @param uri the uri
+        * @return the string
+        */
+       private String createRelationshipNotFoundMessage(String resultType, URI uri) {
+
+               String msg = "No relationship found of type " + resultType + " at the given URI: " + uri.getPath() + "/relationship-list";
+
+               return msg;
+       }
+
        /**
         * Sets the depth.
         *
@@ -829,18 +913,18 @@ public class HttpEntry {
 
                String getAllRandomStr = AAIConfig.get("aai.rest.getall.depthparam", "");
                if (depthParam != null && getAllRandomStr != null && !getAllRandomStr.isEmpty()
-                               && getAllRandomStr.equals(depthParam)) {
+                       && getAllRandomStr.equals(depthParam)) {
                        return depth;
                }
 
-               if(depthParam == null){
-                       if(this.version.compareTo(schemaVersions.getDepthVersion()) >= 0){
+               if (depthParam == null) {
+                       if (this.version.compareTo(schemaVersions.getDepthVersion()) >= 0) {
                                depth = 0;
                        } else {
                                depth = AAIProperties.MAXIMUM_DEPTH;
                        }
                } else {
-                       if (!depthParam.isEmpty() && !"all".equals(depthParam)){
+                       if (!depthParam.isEmpty() && !"all".equals(depthParam)) {
                                try {
                                        depth = Integer.parseInt(depthParam);
                                } catch (Exception e) {
@@ -853,15 +937,15 @@ public class HttpEntry {
 
                int maximumDepth = AAIProperties.MAXIMUM_DEPTH;
 
-               if(maxDepth != null){
+               if (maxDepth != null) {
                        try {
                                maximumDepth = Integer.parseInt(maxDepth);
-                       } catch(Exception ex){
+                       } catch (Exception ex) {
                                throw new AAIException("AAI_4018");
                        }
                }
 
-               if(depth > maximumDepth){
+               if (depth > maximumDepth) {
                        throw new AAIException("AAI_3303");
                }
 
@@ -937,7 +1021,7 @@ public class HttpEntry {
                while (depth >= 0 && !obj.isTopLevel()) {
                        template = obj.getMetadata(ObjectMetadata.URI_TEMPLATE);
 
-                       if(template == null){
+                       if (template == null) {
                                LOGGER.warn("Unable to find the uriTemplate for the object {}", obj.getDbName());
                                return null;
                        }
@@ -945,12 +1029,12 @@ public class HttpEntry {
                        int templateCount = StringUtils.countMatches(template, "/");
                        int truncatedUriCount = StringUtils.countMatches(truncatedUri, "/");
 
-                       if(templateCount > truncatedUriCount){
+                       if (templateCount > truncatedUriCount) {
                                LOGGER.warn("Template uri {} contains more slashes than truncatedUri {}", template, truncatedUri);
                                return null;
                        }
 
-                       int cutIndex = StringUtils.ordinalIndexOf(truncatedUri, "/", truncatedUriCount-templateCount+1);
+                       int cutIndex = StringUtils.ordinalIndexOf(truncatedUri, "/", truncatedUriCount - templateCount + 1);
                        truncatedUri = StringUtils.substring(truncatedUri, 0, cutIndex);
                        uriList.add(truncatedUri);
                        obj = new URIToObject(loader, UriBuilder.fromPath(truncatedUri).build()).getEntity();
@@ -983,8 +1067,8 @@ public class HttpEntry {
                HashMap<String, Introspector> relatedVertices = new HashMap<>();
                VertexProperty aaiUriProperty = v.property(AAIProperties.AAI_URI);
 
-               if(!aaiUriProperty.isPresent()){
-                       if(LOGGER.isDebugEnabled()){
+               if (!aaiUriProperty.isPresent()) {
+                       if (LOGGER.isDebugEnabled()) {
                                LOGGER.debug("For the given vertex {}, it seems aai-uri is not present so not getting related objects", v.id().toString());
                        } else {
                                LOGGER.info("It seems aai-uri is not present in vertex, so not getting related objects, for more info enable debug log");
@@ -994,18 +1078,18 @@ public class HttpEntry {
 
                String aaiUri = aaiUriProperty.value().toString();
 
-               if(!obj.isTopLevel()){
+               if (!obj.isTopLevel()) {
                        String[] uriList = convertIntrospectorToUriList(aaiUri, obj, loader);
                        List<Vertex> vertexChain = null;
                        // If the uriList is null then there is something wrong with converting the uri
                        // into a list of aai-uris so falling back to the old mechanism for finding parents
-                       if(uriList == null){
+                       if (uriList == null) {
                                LOGGER.info("Falling back to the old mechanism due to unable to convert aai-uri to list of uris but this is not optimal");
                                vertexChain = queryEngine.findParents(v);
                        } else {
                                vertexChain = queryEngine.findParents(uriList);
                        }
-                       for(Vertex vertex : vertexChain){
+                       for (Vertex vertex : vertexChain) {
                                try {
                                        final Introspector vertexObj = serializer.getVertexProperties(vertex);
                                        relatedVertices.put(vertexObj.getObjectId(), vertexObj);
@@ -1050,8 +1134,9 @@ public class HttpEntry {
                        URI uri;
                        try {
                                uri = serializer.getURIForVertex(entry.getKey());
-                               if (null != entry.getValue())
+                               if (null != entry.getValue()) {
                                        uriMap.put(entry.getValue().getObjectId(), uri);
+                               }
                        } catch (UnsupportedEncodingException e) {
                                LOGGER.warn("Unable to get URIs, Just continue");
                                continue;
@@ -1064,18 +1149,19 @@ public class HttpEntry {
        }
 
        private Map<String, HashMap<String, Introspector>> buildRelatedObjects(DBSerializer serializer,
-                       QueryEngine queryEngine, Map<Vertex, Introspector> introSpector) {
+                                                                                                                                                  QueryEngine queryEngine, Map<Vertex, Introspector> introSpector) {
 
                Map<String, HashMap<String, Introspector>> relatedObjectsMap = new HashMap<>();
                for (Map.Entry<Vertex, Introspector> entry : introSpector.entrySet()) {
                        try {
                                HashMap<String, Introspector> relatedObjects = this.getRelatedObjects(serializer, queryEngine,
-                                               entry.getKey(), entry.getValue(), this.loader);
-                               if (null != entry.getValue())
+                                       entry.getKey(), entry.getValue(), this.loader);
+                               if (null != entry.getValue()) {
                                        relatedObjectsMap.put(entry.getValue().getObjectId(), relatedObjects);
+                               }
                        } catch (IllegalAccessException | IllegalArgumentException
-                                       | InvocationTargetException | SecurityException | InstantiationException | NoSuchMethodException
-                                       | UnsupportedEncodingException | AAIException | URISyntaxException e) {
+                               | InvocationTargetException | SecurityException | InstantiationException | NoSuchMethodException
+                               | UnsupportedEncodingException | AAIException | URISyntaxException e) {
                                LOGGER.warn("Unable to get realted Objects, Just continue");
                                continue;
                        }
@@ -1087,8 +1173,8 @@ public class HttpEntry {
        }
 
        private void buildNotificationEvent(String sourceOfTruth, Status status, String transactionId,
-                       UEBNotification notification, Map<Vertex, Introspector> deleteObjects, Map<String, URI> uriMap,
-                       Map<String, HashMap<String, Introspector>> deleteRelatedObjects, String basePath) {
+                                                                               UEBNotification notification, Map<Vertex, Introspector> deleteObjects, Map<String, URI> uriMap,
+                                                                               Map<String, HashMap<String, Introspector>> deleteRelatedObjects, String basePath) {
                for (Map.Entry<Vertex, Introspector> entry : deleteObjects.entrySet()) {
                        try {
                                String vertexObjectId = "";
@@ -1096,9 +1182,10 @@ public class HttpEntry {
                                if (null != entry.getValue()) {
                                        vertexObjectId = entry.getValue().getObjectId();
 
-                                       if (uriMap.containsKey(vertexObjectId) && deleteRelatedObjects.containsKey(vertexObjectId))
+                                       if (uriMap.containsKey(vertexObjectId) && deleteRelatedObjects.containsKey(vertexObjectId)) {
                                                notification.createNotificationEvent(transactionId, sourceOfTruth, status,
-                                                               uriMap.get(vertexObjectId), entry.getValue(), deleteRelatedObjects.get(vertexObjectId), basePath);
+                                                       uriMap.get(vertexObjectId), entry.getValue(), deleteRelatedObjects.get(vertexObjectId), basePath);
+                                       }
                                }
                        } catch (UnsupportedEncodingException | AAIException e) {
 
@@ -1114,17 +1201,17 @@ public class HttpEntry {
                }
        }
 
-       public List<Object> getPaginatedVertexList(List<Object> vertexList) throws AAIException{
+       public List<Object> getPaginatedVertexList(List<Object> vertexList) throws AAIException {
                List<Object> vertices;
-               if(this.isPaginated()) {
+               if (this.isPaginated()) {
                        this.setTotalsForPaging(vertexList.size(), this.getPaginationBucket());
                        int startIndex = (this.getPaginationIndex() - 1) * this.getPaginationBucket();
                        int endIndex = Math.min((this.getPaginationBucket() * this.getPaginationIndex()), vertexList.size());
-                       if(startIndex > endIndex){
-                               throw new AAIException("AAI_6150"," ResultIndex is not appropriate for the result set, Needs to be <= "+ endIndex);
+                       if (startIndex > endIndex) {
+                               throw new AAIException("AAI_6150", " ResultIndex is not appropriate for the result set, Needs to be <= " + endIndex);
                        }
                        vertices = vertexList.subList(startIndex, endIndex);
-               }else{
+               } else {
                        vertices = vertexList;
                }
                return vertices;
index 85c7dfa..54215d6 100644 (file)
@@ -28,5 +28,6 @@ public enum HttpMethod {
        DELETE,
        PUT_EDGE,
        DELETE_EDGE,
-       GET;
+       GET,
+    GET_RELATIONSHIP;
 }
diff --git a/aai-core/src/main/java/org/onap/aai/restcore/search/GremlinGroovyShell.java b/aai-core/src/main/java/org/onap/aai/restcore/search/GremlinGroovyShell.java
new file mode 100644 (file)
index 0000000..1d074dd
--- /dev/null
@@ -0,0 +1,58 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.restcore.search;
+
+import groovy.lang.Binding;
+import groovy.lang.Script;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.onap.aai.serialization.engines.TransactionalGraphEngine;
+
+import java.util.Map;
+
+/**
+ * Creates and returns a groovy shell with the
+ * configuration to statically import graph classes
+ *
+ */
+public class GremlinGroovyShell extends AAIAbstractGroovyShell {
+
+       public GremlinGroovyShell() {
+               super();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public GraphTraversal<?, ?> executeTraversal (String traversal, Map<String, Object> params) {
+               Binding binding = new Binding(params);
+               Script script = shell.parse(traversal);
+               script.setBinding(binding);
+               return (GraphTraversal<?, ?>) script.run();
+       }
+
+       /**
+        * @throws UnsupportedOperationException
+        */
+       @Override
+       public String executeTraversal(TransactionalGraphEngine engine, String traversal, Map<String, Object> params) {
+               throw new UnsupportedOperationException();
+       }
+}
diff --git a/aai-core/src/main/java/org/onap/aai/restcore/search/GroovyQueryBuilder.java b/aai-core/src/main/java/org/onap/aai/restcore/search/GroovyQueryBuilder.java
new file mode 100644 (file)
index 0000000..48d4ba8
--- /dev/null
@@ -0,0 +1,74 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.restcore.search;
+
+import groovy.lang.Binding;
+import groovy.lang.Script;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.onap.aai.config.SpringContextAware;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
+import org.onap.aai.query.builder.QueryBuilder;
+import org.onap.aai.serialization.engines.QueryStyle;
+import org.onap.aai.serialization.engines.TransactionalGraphEngine;
+import org.onap.aai.setup.SchemaVersions;
+
+import java.util.Map;
+
+/**
+ * Creates and returns a groovy shell with the
+ * configuration to statically import graph classes
+ *
+ */
+public class GroovyQueryBuilder extends AAIAbstractGroovyShell {
+
+       public GroovyQueryBuilder() {
+               super();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public String executeTraversal (TransactionalGraphEngine engine, String traversal, Map<String, Object> params) {
+               QueryBuilder<Vertex> builder = engine.getQueryBuilder(QueryStyle.GREMLIN_TRAVERSAL);
+               SchemaVersions schemaVersions = SpringContextAware.getBean(SchemaVersions.class);
+               Loader loader = SpringContextAware.getBean(LoaderFactory.class).createLoaderForVersion(ModelType.MOXY,  schemaVersions.getDefaultVersion());
+
+               builder.changeLoader(loader);
+               Binding binding = new Binding(params);
+               binding.setVariable("builder", builder);
+               Script script = shell.parse(traversal);
+               script.setBinding(binding);
+               script.run();
+
+               return builder.getQuery();
+       }
+
+       /**
+        * @throws UnsupportedOperationException
+        */
+       @Override
+       public GraphTraversal<?, ?> executeTraversal(String traversal, Map<String, Object> params) {
+               throw new UnsupportedOperationException();
+       }
+}
index 95582b9..a23ff1f 100644 (file)
@@ -992,6 +992,11 @@ public class DBSerializer {
         return simplePropsHashMap;
     }
 
+    public Introspector dbToRelationshipObject(Vertex v) throws UnsupportedEncodingException, AAIException {
+        Introspector relationshipList = this.latestLoader.introspectorFromName("relationship-list");
+        relationshipList =  createRelationshipList(v, relationshipList, "false");
+        return relationshipList;
+    }
     /**
      * Creates the relationship list.
      *
@@ -1235,7 +1240,7 @@ public class DBSerializer {
     }
 
     public void addRelatedToProperty(Introspector relationship, Vertex cousinVertex, String cousinType) throws AAIUnknownObjectException {
-        Introspector obj = loader.introspectorFromName(cousinType);
+        Introspector obj = this.latestLoader.introspectorFromName(cousinType);
         String nameProps = obj.getMetadata(ObjectMetadata.NAME_PROPS);
         List<Introspector> relatedToProperties = new ArrayList<>();
 
@@ -1734,11 +1739,11 @@ public class DBSerializer {
     /**
      * Verify resource version.
      *
-     * @param action the action
-     * @param nodeType the node type
+     * @param action                 the action
+     * @param nodeType               the node type
      * @param currentResourceVersion the current resource version
-     * @param resourceVersion the resource version
-     * @param uri the uri
+     * @param resourceVersion        the resource version
+     * @param uri                    the uri
      * @return true, if successful
      * @throws AAIException the AAI exception
      */
@@ -1746,6 +1751,7 @@ public class DBSerializer {
         String enabled = "";
         String errorDetail = "";
         String aaiExceptionCode = "";
+        boolean isDeleteResourceVersionOk = true;
         if (currentResourceVersion == null) {
             currentResourceVersion = "";
         }
@@ -1755,12 +1761,16 @@ public class DBSerializer {
         }
         try {
             enabled = AAIConfig.get(AAIConstants.AAI_RESVERSION_ENABLEFLAG);
+
         } catch (AAIException e) {
             ErrorLogHelper.logException(e);
         }
         if (enabled.equals("true")) {
-            if (!currentResourceVersion.equals(resourceVersion)) {
-                if (action.equals("create") && !resourceVersion.equals("")) {
+            if ("delete".equals(action)) {
+                isDeleteResourceVersionOk = verifyResourceVersionForDelete(currentResourceVersion, resourceVersion);
+            }
+            if ((!isDeleteResourceVersionOk) || ((!"delete".equals(action)) && (!currentResourceVersion.equals(resourceVersion)))) {
+                if ("create".equals(action) && !resourceVersion.equals("")) {
                     errorDetail = "resource-version passed for " + action + " of " + uri;
                     aaiExceptionCode = "AAI_6135";
                 } else if (resourceVersion.equals("")) {
@@ -1778,13 +1788,32 @@ public class DBSerializer {
         return true;
     }
 
+    /**
+     * Verify resource version for delete.
+     *
+     * @param currentResourceVersion the current resource version
+     * @param resourceVersion        the resource version
+     * @return true, if successful or false if there is a mismatch
+     */
+    private boolean verifyResourceVersionForDelete(String currentResourceVersion, String resourceVersion) {
+
+        boolean isDeleteResourceVersionOk = true;
+        String resourceVersionDisabledUuid = AAIConfig.get(AAIConstants.AAI_RESVERSION_DISABLED_UUID,
+            AAIConstants.AAI_RESVERSION_DISABLED_UUID_DEFAULT);
+
+        if ((!currentResourceVersion.equals(resourceVersion)) && (!resourceVersion.equals(resourceVersionDisabledUuid))) {
+            isDeleteResourceVersionOk = false;
+        }
+        return isDeleteResourceVersionOk;
+    }
+
     /**
      * Convert from camel case.
      *
      * @param name the name
      * @return the string
      */
-    private String convertFromCamelCase (String name) {
+    private String convertFromCamelCase(String name) {
         String result = "";
         result = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, name);
 
@@ -1810,7 +1839,7 @@ public class DBSerializer {
     private void executePreSideEffects(Introspector obj, Vertex self) throws AAIException {
 
         SideEffectRunner runner = new SideEffectRunner
-                .Builder(this.engine, this).addSideEffect(DataCopy.class).addSideEffect(PrivateEdge.class).build();
+            .Builder(this.engine, this).addSideEffect(DataCopy.class).addSideEffect(PrivateEdge.class).build();
 
         runner.execute(obj, self);
     }
@@ -1818,15 +1847,15 @@ public class DBSerializer {
     private void executePostSideEffects(Introspector obj, Vertex self) throws AAIException {
 
         SideEffectRunner runner = new SideEffectRunner
-                .Builder(this.engine, this).addSideEffect(DataLinkWriter.class).build();
+            .Builder(this.engine, this).addSideEffect(DataLinkWriter.class).build();
 
         runner.execute(obj, self);
     }
 
-    private void enrichData(Introspector obj, Vertex self) throws AAIException  {
+    private void enrichData(Introspector obj, Vertex self) throws AAIException {
 
         SideEffectRunner runner = new SideEffectRunner
-                .Builder(this.engine, this).addSideEffect(DataLinkReader.class).build();
+            .Builder(this.engine, this).addSideEffect(DataLinkReader.class).build();
 
         runner.execute(obj, self);
     }
diff --git a/aai-core/src/main/java/org/onap/aai/service/NodeValidationService.java b/aai-core/src/main/java/org/onap/aai/service/NodeValidationService.java
new file mode 100644 (file)
index 0000000..c7ef769
--- /dev/null
@@ -0,0 +1,56 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai.service;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.onap.aai.validation.nodes.NodeValidator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+
+@Service
+@ConditionalOnProperty(name = "schema.translator.list", havingValue = "config", matchIfMissing = true)
+@PropertySource(value = "classpath:schema-ingest.properties", ignoreResourceNotFound = true)
+@PropertySource(value = "file:${schema.ingest.file}", ignoreResourceNotFound = true)
+public class NodeValidationService {
+
+    private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(NodeValidationService.class);
+
+    @Autowired(required=false)
+    private NodeValidator nodeValidator;
+
+    public NodeValidationService(NodeValidator nodeValidator){
+        this.nodeValidator = nodeValidator;
+    }
+
+    @PostConstruct
+    public void initialize(){
+        if(!nodeValidator.validate()){
+            LOGGER.warn(nodeValidator.getErrorMsg());
+        } else {
+            LOGGER.info("Node validation check passed");
+        }
+    }
+}
+
index c7a7b4a..b735f72 100644 (file)
@@ -29,9 +29,9 @@ public final class AAIConstants {
     public static final String AAI_FILESEP = (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator");
     //
     /** Default to opt aai if system property aai.home is null, using file.separator */
-    public static final String AAI_HOME = (System.getProperty(AJSC_HOME) == null) ? AAI_FILESEP + "opt" + AAI_FILESEP + "app" + AAI_FILESEP +"aai" : System.getProperty(AJSC_HOME); 
+    public static final String AAI_HOME = (System.getProperty(AJSC_HOME) == null) ? AAI_FILESEP + "opt" + AAI_FILESEP + "app" + AAI_FILESEP +"aai" : System.getProperty(AJSC_HOME);
     public static final String AAI_BUNDLECONFIG_NAME = (System.getProperty("BUNDLECONFIG_DIR") == null) ? "bundleconfig" : System.getProperty("BUNDLECONFIG_DIR");
-    public static final String AAI_HOME_BUNDLECONFIG = (System.getProperty(AJSC_HOME) == null) ? AAI_FILESEP + "opt" + AAI_FILESEP + "app" + AAI_FILESEP + "aai" + AAI_FILESEP + AAI_BUNDLECONFIG_NAME : System.getProperty(AJSC_HOME)+ AAI_FILESEP + AAI_BUNDLECONFIG_NAME; 
+    public static final String AAI_HOME_BUNDLECONFIG = (System.getProperty(AJSC_HOME) == null) ? AAI_FILESEP + "opt" + AAI_FILESEP + "app" + AAI_FILESEP + "aai" + AAI_FILESEP + AAI_BUNDLECONFIG_NAME : System.getProperty(AJSC_HOME)+ AAI_FILESEP + AAI_BUNDLECONFIG_NAME;
 
     /** etc directory, relative to AAI_HOME */
     public static final String AAI_HOME_ETC = AAI_HOME_BUNDLECONFIG + AAI_FILESEP + "etc" + AAI_FILESEP;
@@ -63,10 +63,10 @@ public final class AAIConstants {
     public static final int AAI_QUERY_PORT = 8446;
     public static final int AAI_LEGACY_PORT = 8443;
 
-    public static final String AAI_DEFAULT_API_VERSION = "v7";
+    public static final String AAI_DEFAULT_API_VERSION = "v10";
     public static final String AAI_DEFAULT_API_VERSION_PROP = "aai.default.api.version";
     public static final String AAI_NOTIFICATION_CURRENT_VERSION = "aai.notification.current.version";
-    
+
     public static final String AAI_NODENAME = "aai.config.nodename";
 
     public static final String AAI_BULKCONSUMER_LIMIT = "aai.bulkconsumer.payloadlimit";
@@ -85,15 +85,12 @@ public final class AAIConstants {
     public static final String AAI_CRUD_TIMEOUT_APP = "aai.crud.timeout.appspecific";
 
     public static final String AAI_RESVERSION_ENABLEFLAG = "aai.resourceversion.enableflag";
+    public static final String AAI_RESVERSION_DISABLED_UUID = "aai.resourceversion.disabled.uuid";
+    public static final String AAI_RESVERSION_DISABLED_UUID_DEFAULT = "38cf3090-6a0c-4e9d-8142-4332a7352846";
+
 
-    public static final int AAI_GROOMING_DEFAULT_MAX_FIX = 150;
-    public static final int AAI_GROOMING_DEFAULT_SLEEP_MINUTES = 7;
-    
-    public static final int AAI_DUPETOOL_DEFAULT_MAX_FIX = 25;
-    public static final int AAI_DUPETOOL_DEFAULT_SLEEP_MINUTES = 7;
-    
     public static final long HISTORY_MAX_HOURS = 192;
-    
+
     public static final String LOGGING_MAX_STACK_TRACE_ENTRIES = "aai.logging.maxStackTraceEntries";
 
     /*** UEB ***/
index 84f0606..9780365 100644 (file)
@@ -42,8 +42,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class GenerateXsd {
-       
-       private static final Logger logger = LoggerFactory.getLogger("GenerateXsd.class");      
+
+       private static final Logger logger = LoggerFactory.getLogger("GenerateXsd.class");
        protected static String apiVersion = null;
        public static AnnotationConfigApplicationContext ctx = null;
        static String apiVersionFmt = null;
@@ -76,18 +76,18 @@ public class GenerateXsd {
        public static final int VALUE_DESCRIPTION = 1;
        public static final int VALUE_INDEXED_PROPS = 2;
        public static final int VALUE_CONTAINER = 3;
-       
+
        private static final String generateTypeXSD = "xsd";
        private static final String generateTypeYAML = "yaml";
-       
+
        private final static String nodeDir = System.getProperty("nodes.configuration.location");
        private final static String edgeDir = System.getProperty("edges.configuration.location");
        private static final String baseRoot = "aai-schema/";
        private static final String baseAutoGenRoot = "aai-schema/";
-       
+
        private static final String root = baseRoot + "src/main/resources";
        private static final String autoGenRoot = baseAutoGenRoot + "src/main/resources";
-       
+
        private static final String normalStartDir = "aai-core";
        private static final String xsd_dir = root + "/" + RELEASE +"/aai_schema";
 
@@ -97,9 +97,9 @@ public class GenerateXsd {
 
        private static int swaggerSupportStartsVersion = 1; // minimum version to support swagger documentation
 
-       
+
        private static boolean validVersion(String versionToGen) {
-               
+
                if ("ALL".equalsIgnoreCase(versionToGen)) {
                        return true;
                }
@@ -113,14 +113,14 @@ public class GenerateXsd {
 
            return false;
        }
-       
+
        private static boolean versionSupportsSwagger( String version) {
                if (new Integer(version.substring(1)).intValue() >= swaggerSupportStartsVersion ) {
                        return true;
                }
                return false;
        }
-       
+
        public static String getAPIVersion() {
                return apiVersion;
        }
@@ -146,19 +146,19 @@ public class GenerateXsd {
                if ( fileTypeToGen == null ) {
                        fileTypeToGen = generateTypeXSD;
                }
-               
+
                if ( !fileTypeToGen.equals( generateTypeXSD ) && !fileTypeToGen.equals( generateTypeYAML )) {
                        System.err.println("Invalid gen_type passed. " + fileTypeToGen);
                        System.exit(1);
                }
-               
+
                String responsesLabel = System.getProperty("yamlresponses_url");
                responsesUrl = responsesLabel;
-               
+
                List<SchemaVersion> versionsToGen = new ArrayList<>();
                if ( versionToGen == null ) {
                        System.err.println("Version is required, ie v<n> or ALL.");
-                       System.exit(1);                 
+                       System.exit(1);
                }
                else if (!"ALL".equalsIgnoreCase(versionToGen) && !versionToGen.matches("v\\d+") && !validVersion(versionToGen)) {
                        System.err.println("Invalid version passed. " + versionToGen);
@@ -171,14 +171,14 @@ public class GenerateXsd {
                } else {
                        versionsToGen.add(new SchemaVersion(versionToGen));
                }
-               
+
                //process file type System property
                fileTypeToGen = (fileTypeToGen == null ? generateTypeXSD : fileTypeToGen.toLowerCase());
                if ( !fileTypeToGen.equals( generateTypeXSD ) && !fileTypeToGen.equals( generateTypeYAML )) {
                        System.err.println("Invalid gen_type passed. " + fileTypeToGen);
                        System.exit(1);
                } else if ( fileTypeToGen.equals(generateTypeYAML) ) {
-                       if ( responsesUrl == null || responsesUrl.length() < 1 
+                       if ( responsesUrl == null || responsesUrl.length() < 1
                                        || responsesLabel == null || responsesLabel.length() < 1 ) {
                                System.err.println("generating swagger yaml file requires yamlresponses_url and yamlresponses_label properties" );
                                System.exit(1);
@@ -217,11 +217,11 @@ public class GenerateXsd {
                        logger.debug("user.dir = "+System.getProperty("user.dir"));
                        if(System.getProperty("user.dir") != null && !System.getProperty("user.dir").contains(normalStartDir)) {
                                fileName = baseAutoGenRoot + fileName;
-                               
+
                        }
                        else {
                                fileName = baseRoot + fileName;
-                               
+
                        }
                        edgeRuleFile = new File( fileName);
 //                     Document doc = ni.getSchema(translateVersion(v));
@@ -232,6 +232,9 @@ public class GenerateXsd {
                                        HTMLfromOXM swagger = ctx.getBean(HTMLfromOXM.class);
                                        swagger.setVersion(v);
                                        fileContent = swagger.process();
+                                       if ( fileContent.startsWith("Schema format issue")) {
+                                               throw new Exception(fileContent);
+                                       }
                                } catch(Exception e) {
                                logger.error( "Exception creating output file " + outfileName);
                                logger.error( e.getMessage());
@@ -241,7 +244,7 @@ public class GenerateXsd {
                        } else if ( versionSupportsSwagger(apiVersion )) {
                                outfileName = yaml_dir + "/aai_swagger_" + apiVersion + "." + generateTypeYAML;
                                nodesfileName = yaml_dir + "/aai_swagger_" + apiVersion + "." + "nodes"+"."+generateTypeYAML;
-                               try {                                   
+                               try {
                                        YAMLfromOXM swagger = (YAMLfromOXM) ctx.getBean(YAMLfromOXM.class);
                                        swagger.setVersion(v);
                                        fileContent = swagger.process();
@@ -259,13 +262,13 @@ public class GenerateXsd {
                        }
                        outfile = new File(outfileName);
                        File parentDir = outfile.getParentFile();
-                       if(! parentDir.exists()) 
+                       if(! parentDir.exists())
                              parentDir.mkdirs();
                        if(nodesfileName != null) {
                                BufferedWriter nodesBW = null;
                                nodesfile = new File(nodesfileName);
                                parentDir = nodesfile.getParentFile();
-                               if(! parentDir.exists()) 
+                               if(! parentDir.exists())
                                      parentDir.mkdirs();
                            try {
                                nodesfile.createNewFile();
@@ -287,7 +290,7 @@ public class GenerateXsd {
                                }
                        }
                        }
-                                       
+
                    try {
                        outfile.createNewFile();
                    } catch (IOException e) {
@@ -310,9 +313,8 @@ public class GenerateXsd {
                }
                        logger.debug( "GeneratedXSD successful, saved in " + outfileName);
                }
-               
+
        }
 
 }
 
-        
\ No newline at end of file
index 0b89ce1..5abd8f4 100644 (file)
@@ -131,8 +131,7 @@ public class NodesYAMLfromOXM extends OxmFileProcessor {
                        }                       
                        
                        XSDElement javaTypeElement = new XSDElement(elem);
-                       
-                       
+                                       
                        logger.debug("External: "+javaTypeElement.getAttribute("name")+"/"+getXmlRootElementName(javaTypeName));
                        if ( javaTypeName == null ) {
                                String msg = "Invalid OXM file: <java-type> has no name attribute in " + oxmFile; 
@@ -140,7 +139,6 @@ public class NodesYAMLfromOXM extends OxmFileProcessor {
                                throw new AAIException(msg);
                        }
                        namespaceFilter.add(getXmlRootElementName(javaTypeName));
-
                        processJavaTypeElementSwagger( javaTypeName, javaTypeElement, pathSb,
                                definitionsSb, null, null, null, null, null, null);
                }
@@ -274,7 +272,11 @@ public class NodesYAMLfromOXM extends OxmFileProcessor {
                                }
                                if (  indexedProps != null
                                                && indexedProps.contains(xmlElementElement.getAttribute("name") ) ) {
-                                       containerProps.add(xmlElementElement.getQueryParamYAML());
+                                       containerProps.add(xmlElementElement.getQueryParamYAML(elementDescription));
+                                       NodeGetOperation.addContainerProps(container, containerProps);
+                               } else if ( indexedProps == null || indexedProps.isEmpty() && "true".equals(xmlElementElement.getAttribute("required")) ){
+                                       // no indexedProps and element is required, also considered using xml-key in this case
+                                       containerProps.add(xmlElementElement.getPathParamYAMLRqd(elementDescription, false));
                                        NodeGetOperation.addContainerProps(container, containerProps);
                                }
                        if ( xmlElementElement.isStandardType()) {
@@ -500,8 +502,7 @@ public class NodesYAMLfromOXM extends OxmFileProcessor {
                }
                Path path = Paths.get(outfileName);
                Charset charset = Charset.forName("UTF-8");
-               try {
-                       BufferedWriter bw = Files.newBufferedWriter(path, charset);
+               try(BufferedWriter bw = Files.newBufferedWriter(path, charset);) {
                        bw.write(fileContent);
                        if ( bw != null ) {
                                bw.close();
index a758be5..8edab75 100644 (file)
@@ -43,7 +43,6 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
-
 import org.onap.aai.edges.EdgeIngestor;
 import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException;
 import org.onap.aai.exceptions.AAIException;
@@ -65,7 +64,7 @@ public abstract class OxmFileProcessor {
 
        public static final String LINE_SEPARATOR = System.getProperty("line.separator");
        public static final String DOUBLE_LINE_SEPARATOR = System.getProperty("line.separator") + System.getProperty("line.separator");
-       
+
        EdgeIngestor ei;
        NodeIngestor ni;
        protected Set<String> namespaceFilter;
@@ -75,17 +74,17 @@ public abstract class OxmFileProcessor {
        protected Document doc = null;
        protected String apiVersion = null;
        protected SchemaVersions schemaVersions;
-       
-       protected Map combinedJavaTypes;
-       
-       
+
+
        protected static int annotationsStartVersion = 9; // minimum version to support annotations in xsd
        protected static int annotationsMinVersion = 6; // lower versions support annotations in xsd
        protected static int swaggerSupportStartsVersion = 1; // minimum version to support swagger documentation
        protected static int swaggerDiffStartVersion = 1; // minimum version to support difference
        protected static int swaggerMinBasepath = 6; // minimum version to support difference
-       
-       
+
+       protected Map combinedJavaTypes;
+
+
        protected String apiVersionFmt = null;
        protected HashMap<String, String> generatedJavaType = new HashMap<String, String>();
        protected HashMap<String, String> appliedPaths = new HashMap<String, String>();
@@ -125,8 +124,8 @@ public abstract class OxmFileProcessor {
        this.ni = ni;
                this.ei = ei;
        }
-    
-   
+
+
 
        public void setOxmVersion(File oxmFile, SchemaVersion v) {
                this.oxmFile = oxmFile;
@@ -137,16 +136,16 @@ public abstract class OxmFileProcessor {
                this.xml = xml;
                this.v = v;
        }
-       
+
        public void setVersion(SchemaVersion v) {
                this.oxmFile = null;
                this.v = v;
        }
-       
+
        public void setNodeIngestor(NodeIngestor ni) {
                    this.ni = ni;
        }
-       
+
     public void setEdgeIngestor(EdgeIngestor ei) {
             this.ei = ei;
        }
@@ -158,25 +157,25 @@ public abstract class OxmFileProcessor {
        public void setSchemaVersions(SchemaVersions schemaVersions) {
                this.schemaVersions = schemaVersions;
        }
-       
+
        protected void init() throws ParserConfigurationException, SAXException, IOException, AAIException, EdgeRuleNotFoundException  {
-               if(this.xml != null || this.oxmFile != null ) {                 
+               if(this.xml != null || this.oxmFile != null ) {
                        createDocument();
                }
                if(this.doc == null) {
                        this.doc = ni.getSchema(v);
                }
                namespaceFilter = new HashSet<>();
-                               
+
            NodeList bindingsNodes = doc.getElementsByTagName("xml-bindings");
                Element bindingElement;
                NodeList javaTypesNodes;
                Element javaTypesElement;
-               
+
                if ( bindingsNodes == null || bindingsNodes.getLength() == 0 ) {
                        throw new AAIException("OXM file error: missing <binding-nodes> in " + oxmFile);
-               }           
-               
+               }
+
                bindingElement = (Element) bindingsNodes.item(0);
                javaTypesNodes = bindingElement.getElementsByTagName("java-types");
                if ( javaTypesNodes.getLength() < 1 ) {
@@ -192,14 +191,14 @@ public abstract class OxmFileProcessor {
 
        private void createDocument() throws ParserConfigurationException, SAXException, IOException, AAIException {
                DocumentBuilder dBuilder = null;
-               try {   
+               try {
                    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                    dbFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
                    dBuilder = dbFactory.newDocumentBuilder();
                } catch (ParserConfigurationException e) {
                        throw e;
                }
-               try {   
+               try {
                    if ( xml == null ) {
                        doc = dBuilder.parse(oxmFile);
                    } else {
@@ -215,11 +214,11 @@ public abstract class OxmFileProcessor {
        }
        public abstract String getDocumentHeader();
        public abstract String process() throws ParserConfigurationException, SAXException, IOException, AAIException, FileNotFoundException, EdgeRuleNotFoundException ;
-       
+
        public String getXMLRootElementName(Element javaTypeElement) {
                String xmlRootElementName=null;
                NamedNodeMap attributes;
-               
+
                NodeList valNodes = javaTypeElement.getElementsByTagName("xml-root-element");
                Element valElement = (Element) valNodes.item(0);
                attributes = valElement.getAttributes();
@@ -233,7 +232,7 @@ public abstract class OxmFileProcessor {
                }
                return xmlRootElementName;
        }
-       
+
        public String getXmlRootElementName( String javaTypeName )
        {
                String attrName, attrValue;
@@ -263,22 +262,22 @@ public abstract class OxmFileProcessor {
                }
                return null;
        }
-       
+
        public Map getCombinedJavaTypes() {
                return combinedJavaTypes;
        }
-       
+
        public void setCombinedJavaTypes(Map combinedJavaTypes) {
                this.combinedJavaTypes = combinedJavaTypes;
        }
-       
+
        public Element getJavaTypeElementSwagger( String javaTypeName )
        {
-               
+
                String attrName, attrValue;
                Attr attr;
                Element javaTypeElement;
-               
+
                List<Element> combineElementList = new ArrayList<Element>();
                for ( int i = 0; i < javaTypeNodes.getLength(); ++ i ) {
                        javaTypeElement = (Element) javaTypeNodes.item(i);
@@ -295,12 +294,11 @@ public abstract class OxmFileProcessor {
                if ( combineElementList.size() == 0 ) {
                        return (Element) null;
                } else if ( combineElementList.size() > 1 ) {
-                       // need to combine java-attributes
                        return combineElements( javaTypeName, combineElementList);
                }
                return combineElementList.get(0);
        }
-       
+
        public boolean versionSupportsSwaggerDiff( String version) {
                int ver = new Integer(version.substring(1)).intValue();
                if ( ver >= HTMLfromOXM.swaggerDiffStartVersion ) {
@@ -308,7 +306,7 @@ public abstract class OxmFileProcessor {
                }
                return false;
        }
-       
+
        public boolean versionSupportsBasePathProperty( String version) {
                int ver = new Integer(version.substring(1)).intValue();
                if ( ver <= HTMLfromOXM.swaggerMinBasepath ) {
@@ -340,11 +338,11 @@ public abstract class OxmFileProcessor {
 
                for ( int i = 0; i < moreXmlElementNodes.getLength(); ++i ) {
                        xmlElement = (Element)moreXmlElementNodes.item(i);
-                       childNode = xmlElement.cloneNode(true);                 
+                       childNode = xmlElement.cloneNode(true);
                        parentElement.insertBefore(childNode, refChild);
                }
        }
-       
+
        protected Node getXmlPropertiesNode(Element javaTypeElement ) {
                NodeList nl = javaTypeElement.getChildNodes();
                Node child;
@@ -356,7 +354,7 @@ public abstract class OxmFileProcessor {
                }
                return null;
        }
-       
+
        protected Node merge( NodeList nl, Node mergeNode ) {
                NamedNodeMap nnm = mergeNode.getAttributes();
                Node childNode;
@@ -390,7 +388,7 @@ public abstract class OxmFileProcessor {
                childNode = mergeNode.cloneNode(true);
                return childNode;
        }
-       
+
        protected void mergeXmlProperties(Node useChildProperties, NodeList propertiesToMerge ) {
                NodeList nl = useChildProperties.getChildNodes();
                Node childNode;
@@ -403,10 +401,10 @@ public abstract class OxmFileProcessor {
                                        useChildProperties.appendChild(newNode);
                                }
                        }
-                       
+
                }
        }
-       
+
        protected void combineXmlProperties(int useElement, List<Element> combineElementList) {
                // add or update xml-properties to the referenced element from the combined list
                Element javaTypeElement = combineElementList.get(useElement);
@@ -443,7 +441,7 @@ public abstract class OxmFileProcessor {
                }
 
        }
-       
+
        protected Element combineElements( String javaTypeName, List<Element> combineElementList ) {
                Element javaTypeElement;
                NodeList parentNodes;
@@ -486,7 +484,7 @@ public abstract class OxmFileProcessor {
                                parentNodes = javaTypeElement.getElementsByTagName("java-attributes");
                                if ( parentNodes.getLength() == 0 ) {
                                        continue;
-                               }                               
+                               }
                                otherParentElement = (Element)parentNodes.item(0);
                                xmlElementNodes = otherParentElement.getElementsByTagName("xml-element");
                                if ( xmlElementNodes.getLength() <= 0 ) {
@@ -494,7 +492,7 @@ public abstract class OxmFileProcessor {
                                }
                                // xml-element that are not present
                                updateParentXmlElements( parentElement, xmlElementNodes);
-                               
+
                        }
                }
                // need to combine xml-properties
@@ -502,7 +500,7 @@ public abstract class OxmFileProcessor {
                combinedJavaTypes.put( javaTypeName, useElement);
                return combineElementList.get(useElement);
        }
-       
+
 
     private static void prettyPrint(Node node, String tab)
        {
index cb5e779..6597d03 100644 (file)
@@ -84,14 +84,14 @@ public class PutOperation {
             pathSb.append("      operationId: createOrUpdate" + useOpId + "\n");
             pathSb.append("      consumes:\n");
             pathSb.append("        - application/json\n");
-            pathSb.append("        - application/xml\n");                    
+            pathSb.append("        - application/xml\n");
             pathSb.append("      produces:\n");
             pathSb.append("        - application/json\n");
             pathSb.append("        - application/xml\n");
             pathSb.append("      responses:\n");
             pathSb.append("        \"default\":\n");
             pathSb.append("          " + GenerateXsd.getResponsesUrl());
-        
+
             pathSb.append("      parameters:\n");
             pathSb.append(pathParams); // for nesting
             pathSb.append("        - name: body\n");
@@ -99,7 +99,11 @@ public class PutOperation {
             pathSb.append("          description: " + xmlRootElementName + " object that needs to be created or updated. "+relationshipExamplesSb.toString()+"\n");
             pathSb.append("          required: true\n");
             pathSb.append("          schema:\n");
-            pathSb.append("            $ref: \"#/definitions/" + xmlRootElementName + "\"\n");
+            String useElement = xmlRootElementName;
+            if ( xmlRootElementName.equals("relationship")) {
+               useElement += "-dict";
+            }
+            pathSb.append("            $ref: \"#/definitions/" + useElement + "\"\n");
             this.tagRelationshipPathMapEntry();
             return pathSb.toString();
         }
@@ -110,5 +114,5 @@ public class PutOperation {
             }
             return "";
         }
-        
-    }
\ No newline at end of file
+
+    }
index 9de7967..db7c54c 100644 (file)
@@ -52,13 +52,13 @@ public class XSDElement implements Element {
                this.xmlElementElement = xmlElementElement;
                this.maxOccurs = maxOccurs;
        }
-       
+
        public XSDElement(Element xmlElementElement) {
                super();
                this.xmlElementElement = xmlElementElement;
                this.maxOccurs = null;
        }
-       
+
        public String name() {
                return this.getAttribute("name");
        }
@@ -235,13 +235,23 @@ public class XSDElement implements Element {
        }
        
        public String getQueryParamYAML() {
+               return getQueryParamYAML(null);
+       }
+       
+       public String getQueryParamYAML(String elementDescription ) {
+               // when elementDescription is not null, return parameters with description and example
                StringBuffer sbParameter = new StringBuffer();
                sbParameter.append(("        - name: " + this.getAttribute("name") + "\n"));
                sbParameter.append(("          in: query\n"));
-               if ( this.getAttribute("description") != null && this.getAttribute("description").length() > 0 )
-                       sbParameter.append(("          description: " + this.getAttribute("description") + "\n"));
-               else
+               String useDescription = elementDescription;
+               if ( elementDescription == null ) {
+                       useDescription = this.getAttribute("description");
+               }
+               if ( useDescription != null && useDescription.length() > 0 ) {
+                       sbParameter.append(("          description: " + useDescription + "\n"));
+               } else {
                        sbParameter.append(("          description:\n"));
+               }
                sbParameter.append(("          required: false\n"));
                if ( ("java.lang.String").equals(this.getAttribute("type")))
                        sbParameter.append("          type: string\n");
@@ -256,16 +266,28 @@ public class XSDElement implements Element {
                if ( ("java.lang.Boolean").equals(this.getAttribute("type"))) {
                        sbParameter.append("          type: boolean\n");
                }
+               if ( elementDescription != null && StringUtils.isNotBlank(this.getAttribute("name"))) {
+                       sbParameter.append("          example: "+"__"+this.getAttribute("name").toUpperCase()+"__"+"\n");
+               }
                return sbParameter.toString();
        }
        
        public String getPathParamYAML(String elementDescription) {
+               return getPathParamYAMLRqd( elementDescription, true);
+       }
+       
+       public String getPathParamYAMLRqd(String elementDescription, boolean isRqd) {
                StringBuffer sbParameter = new StringBuffer();
                sbParameter.append(("        - name: " + this.getAttribute("name") + "\n"));
                sbParameter.append(("          in: path\n"));
                if ( elementDescription != null && elementDescription.length() > 0 )
                        sbParameter.append(("          description: " + elementDescription + "\n"));
-               sbParameter.append(("          required: true\n"));
+               if ( isRqd ) {
+                       sbParameter.append(("          required: true\n"));
+               } else {
+                       // used by Nodes API for query params
+                       sbParameter.append(("          required: false\n"));
+               }
                if ( ("java.lang.String").equals(this.getAttribute("type")))
                        sbParameter.append("          type: string\n");
                if ( ("java.lang.Long").equals(this.getAttribute("type"))) {
@@ -306,7 +328,7 @@ public class XSDElement implements Element {
                        sbElement.append(" type=\"xs:int\"");
                if ( elementType.equals("java.lang.Boolean"))
                        sbElement.append(" type=\"xs:boolean\"");
-               if ( addType != null || elementType.startsWith("java.lang.") ) {        
+               if ( addType != null || elementType.startsWith("java.lang.") ) {
                        sbElement.append(" minOccurs=\"0\"");
                } 
                if ( elementContainerType != null && elementContainerType.equals("java.util.ArrayList")) {
index a14a697..f807bcb 100644 (file)
@@ -112,7 +112,7 @@ public class YAMLfromOXM extends OxmFileProcessor {
                try {
                        init();
                } catch(Exception e) {
-                       logger.error( "Error initializing " + this.getClass());
+                       logger.error( "Error initializing " + this.getClass(),e);
                        throw e;
                }               
                pathSb.append(getDocumentHeader());
@@ -138,7 +138,6 @@ public class YAMLfromOXM extends OxmFileProcessor {
                                throw new AAIException(msg);
                        }
                        namespaceFilter.add(getXmlRootElementName(javaTypeName));
-
                        processJavaTypeElementSwagger( javaTypeName, javaTypeElement, pathSb,
                                definitionsSb, null, null, null, null, null, null);
                }
@@ -235,7 +234,7 @@ public class YAMLfromOXM extends OxmFileProcessor {
        private String processJavaTypeElementSwagger( String javaTypeName, Element javaTypeElement,
                        StringBuffer pathSb, StringBuffer definitionsSb, String path, String tag, String opId,
                        String getItemName, StringBuffer pathParams, String validEdges) {
-
+               
                String xmlRootElementName = getXMLRootElementName(javaTypeElement);
                StringBuilder definitionsLocalSb = new StringBuilder(256);
                
@@ -468,7 +467,7 @@ public class YAMLfromOXM extends OxmFileProcessor {
                                results.get(key).stream().filter((i) -> (i.getFrom().equals(xmlRootElementName) && (! i.isPrivateEdge() && i.getPreventDelete().equals("OUT")))).forEach((i) ->{ preventDelete.add(i.getTo().toUpperCase());} );
                        }
                } catch(Exception e) {
-                       logger.debug("xmlRootElementName: "+xmlRootElementName+"\n"+e);
+                       logger.debug("xmlRootElementName: "+xmlRootElementName+" from edge exception\n", e);
                }
                try {
                        EdgeRuleQuery q1 = new EdgeRuleQuery.Builder(xmlRootElementName).version(v).toOnly().build();
@@ -481,7 +480,7 @@ public class YAMLfromOXM extends OxmFileProcessor {
                                results.get(key).stream().filter((i) -> (i.getTo().equals(xmlRootElementName) && (! i.isPrivateEdge() && i.getPreventDelete().equals("IN")))).forEach((i) ->{ preventDelete.add(i.getFrom().toUpperCase());} );
                        }
                } catch(Exception e) {
-                       logger.debug("xmlRootElementName: "+xmlRootElementName+"\n"+e);
+                       logger.debug("xmlRootElementName: "+xmlRootElementName+" to edge exception\n", e);
                }
                if(preventDelete.size() > 0) {
                        prevent = xmlRootElementName.toUpperCase()+" cannot be deleted if related to "+String.join(",",preventDelete);
@@ -536,6 +535,7 @@ public class YAMLfromOXM extends OxmFileProcessor {
                        }
                } catch (Exception e) {
                        e.printStackTrace();
+                       logger.error("Exception adding in javaTypeDefinitions",e);
                }
                if ( xmlRootElementName.equals("inventory") ) {
                        logger.trace("skip xmlRootElementName(2)="+xmlRootElementName);
@@ -568,15 +568,10 @@ public class YAMLfromOXM extends OxmFileProcessor {
                        logger.error( "Exception creating output file " + outfileName);
                        e.printStackTrace();
                }
-               BufferedWriter bw = null;
                Charset charset = Charset.forName("UTF-8");
                Path path = Paths.get(outfileName);
-               try {
-                       bw = Files.newBufferedWriter(path, charset);
+               try(BufferedWriter bw = Files.newBufferedWriter(path, charset)){
                        bw.write(fileContent);
-                       if ( bw != null ) {
-                               bw.close();
-                       }
                } catch ( IOException e) {
                        logger.error( "Exception writing output file " + outfileName);
                        e.printStackTrace();
@@ -600,4 +595,4 @@ public class YAMLfromOXM extends OxmFileProcessor {
                return false;
        }
 
-}
\ No newline at end of file
+}
index ac89727..94d8f4c 100644 (file)
@@ -37,7 +37,7 @@ public class EventClientPublisher {
 
     private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(EventClientPublisher.class);
 
-    @Value("${dmaap.ribbon.listOfServers}")
+    @Value("${dmaap.ribbon.listOfServers:}")
     private String hosts;
 
     @Value("${dmaap.ribbon.username:}")
diff --git a/aai-core/src/main/resources/schema-ingest.properties b/aai-core/src/main/resources/schema-ingest.properties
new file mode 100644 (file)
index 0000000..4bae01d
--- /dev/null
@@ -0,0 +1 @@
+schema.translator.list=config
index ce8dfe2..fb914f0 100644 (file)
@@ -56,10 +56,11 @@ import org.springframework.test.context.junit4.rules.SpringMethodRule;
         EdgeSerializer.class,
         NodeIngestor.class,
         SpringContextAware.class,
-        IntrospectionConfig.class,  
+        IntrospectionConfig.class,
         RestBeanConfig.class
 })
-@TestPropertySource(properties = { "schema.uri.base.path = /aai", "schema.xsd.maxoccurs = 5000" , "schema.translator.list=config"})
+@TestPropertySource(properties = { "schema.uri.base.path = /aai", "schema.xsd.maxoccurs = 5000" , "schema.translator.list=config",
+    "schema.nodes.location=src/test/resources/onap/oxm", "schema.edges.location=src/test/resources/onap/dbedgerules"})
 public abstract class AAISetup {
 
     @ClassRule
@@ -70,16 +71,16 @@ public abstract class AAISetup {
 
     @Autowired
        protected  Map<SchemaVersion, MoxyLoader>  moxyLoaderInstance;
-       
+
        @Autowired
        protected HttpEntry traversalHttpEntry;
-       
+
        @Autowired
        protected HttpEntry traversalUriHttpEntry;
-       
+
        @Autowired
        protected NodeIngestor nodeIngestor;
-       
+
        @Autowired
        protected LoaderFactory loaderFactory;
 
@@ -90,8 +91,8 @@ public abstract class AAISetup {
        protected String basePath;
 
        @Value("${schema.xsd.maxoccurs}")
-       protected String maxOccurs;     
-       
+       protected String maxOccurs;
+
     protected static final String SERVICE_NAME = "JUNIT";
 
     @BeforeClass
@@ -101,7 +102,7 @@ public abstract class AAISetup {
         System.setProperty("aai.service.name", SERVICE_NAME);
         QueryFormatTestHelper.setFinalStatic(AAIConstants.class.getField("AAI_HOME_ETC_OXM"), "src/test/resources/bundleconfig-local/etc/oxm/");
     }
-       
-       
-       
+
+
+
 }
diff --git a/aai-core/src/test/java/org/onap/aai/DataLinkSetup.java b/aai-core/src/test/java/org/onap/aai/DataLinkSetup.java
new file mode 100644 (file)
index 0000000..0138f32
--- /dev/null
@@ -0,0 +1,120 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 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.aai;
+
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.onap.aai.config.IntrospectionConfig;
+import org.onap.aai.config.RestBeanConfig;
+import org.onap.aai.config.SpringContextAware;
+import org.onap.aai.edges.EdgeIngestor;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.MoxyLoader;
+import org.onap.aai.nodes.NodeIngestor;
+import org.onap.aai.rest.db.HttpEntry;
+import org.onap.aai.serialization.db.EdgeSerializer;
+import org.onap.aai.serialization.queryformats.QueryFormatTestHelper;
+import org.onap.aai.setup.AAIConfigTranslator;
+import org.onap.aai.setup.SchemaLocationsBean;
+import org.onap.aai.setup.SchemaVersion;
+import org.onap.aai.setup.SchemaVersions;
+import org.onap.aai.testutils.TestUtilConfigTranslatorforDataLink;
+import org.onap.aai.util.AAIConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.rules.SpringClassRule;
+import org.springframework.test.context.junit4.rules.SpringMethodRule;
+
+import java.util.Map;
+
+
+@ContextConfiguration(classes = {
+        SchemaLocationsBean.class,
+        SchemaVersions.class,
+               TestUtilConfigTranslatorforDataLink.class,
+        EdgeIngestor.class,
+        EdgeSerializer.class,
+        NodeIngestor.class,
+        SpringContextAware.class,
+        IntrospectionConfig.class,  
+        RestBeanConfig.class
+})
+@TestPropertySource(properties = {
+               "schema.uri.base.path = /aai",
+               "schema.xsd.maxoccurs = 5000",
+               "schema.version.api.default = v4",
+               "schema.version.edge.label.start = v4",
+               "schema.version.depth.start = v3",
+               "schema.version.app.root.start = v4",
+               "schema.version.related.link.start = v4",
+               "schema.version.namespace.change.start = v4",
+               "schema.version.list = v1,v2,v3,v4",
+        "schema.translator.list = config"
+})
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
+public abstract class DataLinkSetup {
+
+    @ClassRule
+    public static final SpringClassRule springClassRule = new SpringClassRule();
+
+    @Rule
+    public final SpringMethodRule springMethodRule = new SpringMethodRule();
+
+    @Autowired
+       protected  Map<SchemaVersion, MoxyLoader>  moxyLoaderInstance;
+       
+       @Autowired
+       protected HttpEntry traversalHttpEntry;
+       
+       @Autowired
+       protected HttpEntry traversalUriHttpEntry;
+       
+       @Autowired
+       protected NodeIngestor nodeIngestor;
+       
+       @Autowired
+       protected LoaderFactory loaderFactory;
+
+       @Autowired
+       protected SchemaVersions schemaVersions;
+
+       @Value("${schema.uri.base.path}")
+       protected String basePath;
+
+       @Value("${schema.xsd.maxoccurs}")
+       protected String maxOccurs;     
+       
+    protected static final String SERVICE_NAME = "JUNIT";
+
+    @BeforeClass
+    public static void setupBundleconfig() throws Exception {
+        System.setProperty("AJSC_HOME", ".");
+        System.setProperty("BUNDLECONFIG_DIR", "src/test/resources/bundleconfig-local");
+        System.setProperty("aai.service.name", SERVICE_NAME);
+        QueryFormatTestHelper.setFinalStatic(AAIConstants.class.getField("AAI_HOME_ETC_OXM"), "src/test/resources/bundleconfig-local/etc/oxm/");
+    }
+       
+       
+       
+}
index c8d8caf..e5ecaee 100644 (file)
@@ -21,8 +21,10 @@ package org.onap.aai.introspection;
 
 import org.junit.Test;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class MoxyEngineTest extends IntrospectorTestSpec {
 
        /**
index 72b5d31..882b67e 100644 (file)
@@ -24,6 +24,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import java.util.Set;
 
@@ -31,6 +32,7 @@ import static org.hamcrest.Matchers.hasItems;
 import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertThat;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class PropertyPredicatesTest extends AAISetup {
 
        private Loader loader;
index f016546..c94afd2 100644 (file)
@@ -150,33 +150,6 @@ public class DataCopyTest extends AAISetup{
                
        }
        
-       @Test
-       public void runPopulateModelVersionId() throws URISyntaxException, AAIException, UnsupportedEncodingException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException, MalformedURLException {
-               
-               final Loader loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDepthVersion());
-               final Introspector obj = loader.introspectorFromName("generic-vnf");
-               obj.setValue("vnf-id", "myId");
-               obj.setValue("persona-model-id", "key1");
-               obj.setValue("persona-model-version", "testValue");
-               TransactionalGraphEngine spy = spy(dbEngine);
-               TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin());
-               Graph g = graph.newTransaction();
-               GraphTraversalSource traversal = g.traversal();
-               when(spy.asAdmin()).thenReturn(adminSpy);
-               when(adminSpy.getTraversalSource()).thenReturn(traversal);
-               when(self.<String>property(AAIProperties.AAI_URI)).thenReturn(prop);
-               when(prop.orElse(null)).thenReturn(obj.getURI());
-               DBSerializer serializer = new DBSerializer(schemaVersions.getDefaultVersion(), spy, introspectorFactoryType, "AAI_TEST");
-               SideEffectRunner runner = new SideEffectRunner
-                               .Builder(spy, serializer).addSideEffect(DataCopy.class).build();
-               
-               runner.execute(obj, self);
-               
-               assertEquals("value populated", "key2", obj.getValue("model-version-id"));
-               
-               g.tx().rollback();
-       }
-       
        @Test
        public void verifyNestedSideEffect() throws URISyntaxException, AAIException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException, IOException {
                
index aed7bd5..c121829 100644 (file)
@@ -36,6 +36,7 @@ import org.junit.runners.Parameterized;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.onap.aai.AAISetup;
+import org.onap.aai.DataLinkSetup;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.dbmap.DBConnectionType;
 import org.onap.aai.exceptions.AAIException;
@@ -61,7 +62,7 @@ import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
 @RunWith(value = Parameterized.class)
-public class DataLinkTest extends AAISetup {
+public class DataLinkTest extends DataLinkSetup {
 
        private static JanusGraph graph;
        private final static ModelType introspectorFactoryType = ModelType.MOXY;
index b6f15e4..e44fdd5 100644 (file)
@@ -24,10 +24,12 @@ import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.introspection.*;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class CreateUUIDTest extends AAISetup {
 
     private CreateUUID createUUID;
index 8047342..5fd185d 100644 (file)
@@ -24,12 +24,14 @@ import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.introspection.*;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import static junit.framework.TestCase.assertNotNull;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class DefaultFieldsTest extends AAISetup {
 
     private Loader loader;
@@ -76,4 +78,4 @@ public class DefaultFieldsTest extends AAISetup {
 
         assertFalse("It shouldn't be resolving this issue as hostname is required key", isResolved);
     }
-}
\ No newline at end of file
+}
index fa45792..713a8ae 100644 (file)
@@ -24,6 +24,7 @@ import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.introspection.*;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import java.net.URI;
 
@@ -33,6 +34,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class InjectKeysFromURITest extends AAISetup {
 
     private Loader loader;
@@ -91,4 +93,4 @@ public class InjectKeysFromURITest extends AAISetup {
                 pserver.getValue("hostname"));
     }
 
-}
\ No newline at end of file
+}
index f71aa2a..68a03b3 100644 (file)
@@ -24,6 +24,7 @@ import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.introspection.*;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import static junit.framework.TestCase.assertNotNull;
 import static org.eclipse.persistence.jpa.jpql.Assert.fail;
@@ -31,6 +32,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class IntrospectorValidatorTest extends AAISetup {
 
     private Loader loader;
@@ -122,4 +124,4 @@ public class IntrospectorValidatorTest extends AAISetup {
         assertNotNull("Get resolvers should not be null",  b.getResolvers());
     }
 
-}
\ No newline at end of file
+}
index 2e99e3e..cf1b778 100644 (file)
@@ -24,11 +24,13 @@ import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.introspection.*;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertNull;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class RemoveNonVisiblePropertyTest extends AAISetup {
 
     private Loader loader;
@@ -65,4 +67,4 @@ public class RemoveNonVisiblePropertyTest extends AAISetup {
     }
 
 
-}
\ No newline at end of file
+}
index d452b00..c2f8055 100644 (file)
@@ -30,6 +30,7 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.onap.aai.AAISetup;
+import org.onap.aai.DataLinkSetup;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.ModelType;
@@ -37,6 +38,7 @@ import org.onap.aai.rest.RestTokens;
 import org.onap.aai.serialization.engines.QueryStyle;
 import org.onap.aai.serialization.engines.JanusGraphDBEngine;
 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
+import org.springframework.test.annotation.DirtiesContext;
 
 import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.MultivaluedMap;
@@ -54,10 +56,11 @@ import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
 
 @RunWith(value = Parameterized.class)
-public class GraphTraversalTest extends AAISetup {
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
+public class GraphTraversalTest extends DataLinkSetup {
 
        private TransactionalGraphEngine dbEngine;
-       private TransactionalGraphEngine dbEnginev9;
+       private TransactionalGraphEngine dbEngineDepthVersion;
 
        @Parameterized.Parameter(value = 0)
        public QueryStyle queryStyle;
@@ -71,13 +74,13 @@ public class GraphTraversalTest extends AAISetup {
        }
 
        @Rule public ExpectedException thrown = ExpectedException.none();
-       
-       
+
+
        /**
         * Configure.
-        * @throws Exception 
-        * @throws SecurityException 
-        * @throws NoSuchFieldException 
+        * @throws Exception
+        * @throws SecurityException
+        * @throws NoSuchFieldException
         */
        @Before
        public void configure() throws Exception {
@@ -85,13 +88,13 @@ public class GraphTraversalTest extends AAISetup {
                                new JanusGraphDBEngine(queryStyle,
                                        loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion()),
                                        false);
-               
-               dbEnginev9 = 
+
+               dbEngineDepthVersion =
                                new JanusGraphDBEngine(queryStyle,
                                        loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDepthVersion()),
                                        false);
        }
-       
+
        /**
         * Parent query.
         *
@@ -101,9 +104,9 @@ public class GraphTraversalTest extends AAISetup {
        @Test
     public void parentQuery() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/complexes/complex/key1").build();
-               
+
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromURI(uri);
-               
+
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start().has("physical-location-id", "key1").has("aai-node-type", "complex");
                assertEquals(
                                "gremlin query should be " + expected.toString(),
@@ -123,7 +126,7 @@ public class GraphTraversalTest extends AAISetup {
                                query.getParentResultType());
                assertEquals("dependent",false, query.isDependent());
 
-               
+
     }
 
        /**
@@ -161,9 +164,9 @@ public class GraphTraversalTest extends AAISetup {
                                query.getResultType());
                assertEquals("dependent",true, query.isDependent());
 
-               
+
     }
-       
+
        /**
         * Naming exceptions.
         *
@@ -208,9 +211,9 @@ public class GraphTraversalTest extends AAISetup {
                                query.getContainerType());
                assertEquals("dependent",true, query.isDependent());
 
-               
+
     }
-       
+
        /**
         * Gets the all.
         *
@@ -255,9 +258,9 @@ public class GraphTraversalTest extends AAISetup {
                                query.getContainerType());
                assertEquals("dependent",true, query.isDependent());
 
-               
+
     }
-       
+
        @Test
     public void getAllParent() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/pservers").build();
@@ -288,10 +291,10 @@ public class GraphTraversalTest extends AAISetup {
                                query.getContainerType());
                assertEquals("dependent",false, query.isDependent());
 
-               
+
     }
-       
-       
+
+
        /**
         * Gets the via query param.
         *
@@ -315,7 +318,7 @@ public class GraphTraversalTest extends AAISetup {
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("cloud-owner", "mycloudowner").has("cloud-region-id", "mycloudregionid")
                                .has("aai-node-type", "cloud-region");
-                                               
+
                assertEquals(
                                "gremlin query should be " + expected.toString(),
                                expected.toString(),
@@ -339,7 +342,7 @@ public class GraphTraversalTest extends AAISetup {
                assertEquals("dependent",true, query.isDependent());
 
        }
-       
+
        @Test
        public void getViaDuplicateQueryParam() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/cloud-regions/cloud-region/mycloudowner/mycloudregionid/tenants/tenant").build();
@@ -359,7 +362,7 @@ public class GraphTraversalTest extends AAISetup {
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("cloud-owner", "mycloudowner").has("cloud-region-id", "mycloudregionid")
                                .has("aai-node-type", "cloud-region");
-                                               
+
                assertEquals(
                                "gremlin query should be " + expected.toString(),
                                expected.toString(),
@@ -383,7 +386,7 @@ public class GraphTraversalTest extends AAISetup {
                assertEquals("dependent",true, query.isDependent());
 
        }
-       
+
        /**
         * Gets the plural via query param.
         *
@@ -403,7 +406,7 @@ public class GraphTraversalTest extends AAISetup {
 
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("aai-node-type", "vnfc");
-                                       
+
                assertEquals(
                                "gremlin query should be " + expected.toString(),
                                expected.toString(),
@@ -427,7 +430,7 @@ public class GraphTraversalTest extends AAISetup {
                assertEquals("dependent",true, query.isDependent());
 
        }
-       
+
        /**
         * Gets the all query param naming exception.
         *
@@ -441,7 +444,7 @@ public class GraphTraversalTest extends AAISetup {
                MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
                map.putSingle("cvlan-tag", "333");
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromURI(uri, map);
-               
+
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("vnf-id", "key1").has("aai-node-type", "vce")
                                .in("org.onap.relationships.inventory.BelongsTo")
@@ -476,9 +479,9 @@ public class GraphTraversalTest extends AAISetup {
                                query.getContainerType());
                assertEquals("dependent",true, query.isDependent());
 
-               
+
     }
-       
+
        /**
         * Abstract type.
         *
@@ -490,10 +493,10 @@ public class GraphTraversalTest extends AAISetup {
                URI uri = UriBuilder.fromPath("vnf/key1").build();
 
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromURI(uri);
-               
+
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("vnf-id", "key1").has(AAIProperties.NODE_TYPE, P.within("vce", "generic-vnf"));
-                       
+
                GraphTraversal<Vertex, Vertex> expectedParent = expected;
                assertEquals(
                                "gremlin query should be " + expected.toString(),
@@ -511,12 +514,12 @@ public class GraphTraversalTest extends AAISetup {
                                "result type should be vnf",
                                "vnf",
                                query.getResultType());
-               
+
                assertEquals("dependent",false, query.isDependent());
 
-               
+
     }
-       
+
        /**
         * Non parent abstract type.
         *
@@ -530,17 +533,17 @@ public class GraphTraversalTest extends AAISetup {
                thrown.expectMessage(containsString("not a valid path"));
                dbEngine.getQueryBuilder().createQueryFromURI(uri);
     }
-       
+
        @Test
        public void parentAbstractTypeWithNesting() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("vnf/key1/vf-modules/vf-module/key2").build();
-               
+
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromURI(uri);
-               
+
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("vnf-id", "key1").has(AAIProperties.NODE_TYPE, P.within("vce", "generic-vnf"))
                                .union(__.in("org.onap.relationships.inventory.BelongsTo").has(AAIProperties.NODE_TYPE, "vf-module")).has("vf-module-id", "key2");
-               
+
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("vnf-id", "key1").has(AAIProperties.NODE_TYPE, P.within("vce", "generic-vnf"));
                assertEquals(
@@ -559,11 +562,11 @@ public class GraphTraversalTest extends AAISetup {
                                "result type should be vf-module",
                                "vf-module",
                                query.getResultType());
-               
+
                assertEquals("dependent",true, query.isDependent());
-               
+
        }
-       
+
        @Test
        public void getViaBadQueryParam() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/cloud-regions/cloud-region/a/b/tenants/tenant").build();
@@ -571,11 +574,11 @@ public class GraphTraversalTest extends AAISetup {
                map.putSingle("tenant-n231ame", "Tenant1");
                thrown.expect(AAIException.class);
                thrown.expect(hasProperty("code", is("AAI_3000")));
-               
+
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromURI(uri, map);
 
        }
-       
+
        @Test
        public void getPluralViaBadQueryParam() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/cloud-regions/cloud-region/a/b/tenants").build();
@@ -583,11 +586,11 @@ public class GraphTraversalTest extends AAISetup {
                map.putSingle("tenant-n231ame", "Tenant1");
                thrown.expect(AAIException.class);
                thrown.expect(hasProperty("code", is("AAI_3000")));
-               
+
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromURI(uri, map);
 
        }
-       
+
        @Test
        public void getPluralViaDuplicateQueryParam() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("network/vnfcs").build();
@@ -606,7 +609,7 @@ public class GraphTraversalTest extends AAISetup {
 
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("aai-node-type", "vnfc");
-                                       
+
                assertEquals(
                                "gremlin query should be " + expected.toString(),
                                expected.toString(),
@@ -630,19 +633,19 @@ public class GraphTraversalTest extends AAISetup {
                assertEquals("dependent",true, query.isDependent());
 
        }
-       
+
        @Test
        public void dbAliasedSearch() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("network/generic-vnfs").build();
                MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
                map.putSingle("persona-model-customization-id", "key2");
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri, map);
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri, map);
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("aai-node-type", "generic-vnf")
                                .has("model-customization-id", "key2");
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("aai-node-type", "generic-vnf");
-               
+
                assertEquals(
                                "gremlin query should be " + expected.toString(),
                                expected.toString(),
@@ -651,7 +654,7 @@ public class GraphTraversalTest extends AAISetup {
                                "parent",
                                expectedParent.toString(),
                                query.getQueryBuilder().getParentQuery().getQuery().toString());
-               
+
                assertEquals(
                                "result type should be",
                                "generic-vnf",
@@ -661,22 +664,22 @@ public class GraphTraversalTest extends AAISetup {
                                "",
                                query.getParentResultType());
                assertEquals("dependent",true, query.isDependent());
-               
-       
+
+
        }
-       
+
        @Test
        public void dataLinkedSearch() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("network/vpn-bindings").build();
                MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
                map.putSingle("global-route-target", "key2");
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri, map);
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri, map);
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("aai-node-type", "vpn-binding")
                                .where(__.in("org.onap.relationships.inventory.BelongsTo").has(AAIProperties.NODE_TYPE, "route-target").has("global-route-target", "key2"));
                GraphTraversal<Vertex, Vertex> expectedParent = __.<Vertex>start()
                                .has("aai-node-type", "vpn-binding");
-               
+
                assertEquals(
                                "gremlin query should be " + expected.toString(),
                                expected.toString(),
@@ -685,7 +688,7 @@ public class GraphTraversalTest extends AAISetup {
                                "parent",
                                expectedParent.toString(),
                                query.getQueryBuilder().getParentQuery().getQuery().toString());
-               
+
                assertEquals(
                                "result type should be",
                                "vpn-binding",
@@ -701,7 +704,7 @@ public class GraphTraversalTest extends AAISetup {
        public void pluralCousin() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/complexes/complex/key1/related-to/pservers").build();
 
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri);
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri);
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("physical-location-id", "key1")
                                .has("aai-node-type", "complex")
@@ -735,7 +738,7 @@ public class GraphTraversalTest extends AAISetup {
        public void specificCousin() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/complexes/complex/key1/related-to/pservers/pserver/key2").build();
 
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri);
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri);
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("physical-location-id", "key1")
                                .has("aai-node-type", "complex")
@@ -770,7 +773,7 @@ public class GraphTraversalTest extends AAISetup {
        public void doubleSpecificCousin() throws UnsupportedEncodingException, AAIException {
                URI uri = UriBuilder.fromPath("cloud-infrastructure/complexes/complex/key1/related-to/pservers/pserver/key2/related-to/vservers/vserver/key3").build();
 
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri);
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri);
                GraphTraversal<Vertex, Vertex> expected = __.<Vertex>start()
                                .has("physical-location-id", "key1")
                                .has("aai-node-type", "complex")
@@ -811,7 +814,7 @@ public class GraphTraversalTest extends AAISetup {
 
                thrown.expect(AAIException.class);
                thrown.expectMessage(containsString(RestTokens.COUSIN.toString()));
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri);
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri);
 
        }
 
@@ -821,7 +824,7 @@ public class GraphTraversalTest extends AAISetup {
 
                thrown.expect(AAIException.class);
                thrown.expectMessage(containsString("chain plurals"));
-               QueryParser query = dbEnginev9.getQueryBuilder().createQueryFromURI(uri);
-       
+               QueryParser query = dbEngineDepthVersion.getQueryBuilder().createQueryFromURI(uri);
+
        }
 }
index f266fc0..376b793 100644 (file)
@@ -48,7 +48,7 @@ public class LegacyQueryTest extends AAISetup {
        private DynamicJAXBContext context = nodeIngestor.getContextForVersion(version);
 
        public void setup(){
-               version = new SchemaVersion("v8");
+               version = new SchemaVersion("v10");
                dbEngine =
                        new JanusGraphDBEngine(QueryStyle.GREMLIN_TRAVERSAL,
                                loaderFactory.createLoaderForVersion(ModelType.MOXY, version),
index f072bb1..dfb251b 100644 (file)
@@ -54,19 +54,19 @@ public class RelationshipGremlinQueryTest extends AAISetup {
        private TransactionalGraphEngine dbEngine;
        private SchemaVersion version;
        private DynamicJAXBContext context = injestor.getContextForVersion(version);
-       
+
        @Rule
        public ExpectedException thrown = ExpectedException.none();
 
        @Before
        public void setup(){
-           version = new SchemaVersion("v8");
+           version = new SchemaVersion("v10");
                dbEngine =
                        new JanusGraphDBEngine(QueryStyle.GREMLIN_TRAVERSAL,
                                loaderFactory.createLoaderForVersion(ModelType.MOXY, version),
                                false);
        }
-       
+
        /**
         * Parent query.
         *
@@ -76,7 +76,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
         */
        @Test
     public void parentQuery() throws JAXBException, UnsupportedEncodingException, AAIException {
-               
+
                String content =
                                "{"
                                + "\"related-to\" : \"pserver\","
@@ -85,7 +85,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key1\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -93,11 +93,11 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-               
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
-               String expected = 
+               String expected =
                                ".has('hostname', 'key1').has('aai-node-type', 'pserver')";
                assertEquals(
                                "gremlin query should be " + expected,
@@ -111,7 +111,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be pserver",
                                "pserver",
                                query.getResultType());
-               
+
     }
 
        /**
@@ -134,7 +134,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key2\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -142,7 +142,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
@@ -163,7 +163,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "lag-interface",
                                query.getResultType());
     }
-       
+
        /**
         * Naming exceptions.
         *
@@ -187,7 +187,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"655\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -195,15 +195,15 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
-               String expected = 
+               String expected =
                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce')"
                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'port-group')"
                                + ".has('interface-id', 'key2').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'cvlan-tag')"
                                + ".has('cvlan-tag', 655)";
-               String expectedParent = 
+               String expectedParent =
                                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce')"
                                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'port-group')"
                                                + ".has('interface-id', 'key2')";
@@ -219,9 +219,9 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be cvlan-tag",
                                "cvlan-tag",
                                query.getResultType());
-               
+
     }
-       
+
        /**
         * Scrambled relationship.
         *
@@ -253,7 +253,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "}";
                scrambledRelationshipSpec(content);
        }
-       
+
        /**
         * Reversed relationship.
         *
@@ -285,7 +285,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "}";
                scrambledRelationshipSpec(content);
        }
-       
+
        /**
         * Ordered ambiguous relationship.
         *
@@ -317,7 +317,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "}";
                scrambledRelationshipSpec(content);
        }
-    
+
     /**
      * Scrambled relationship spec.
      *
@@ -328,7 +328,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
      */
     public void scrambledRelationshipSpec(String content) throws JAXBException, UnsupportedEncodingException, AAIException {
 
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -336,17 +336,17 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
-               String expected = 
+               String expected =
                                ".has('vnf-id', 'key1').has('aai-node-type', 'generic-vnf')"
                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'lag-interface')"
                                + ".has('interface-name', 'key2').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'l-interface')"
                                + ".has('interface-name', 'key3').out('tosca.relationships.LinksTo').has('aai-node-type', 'vlan')"
                                + ".has('vlan-interface', 'key4').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'l3-interface-ipv4-address-list')"
                                + ".has('l3-interface-ipv4-address', 'key5')";
-               String expectedParent = 
+               String expectedParent =
                                ".has('vnf-id', 'key1').has('aai-node-type', 'generic-vnf')"
                                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'lag-interface')"
                                                + ".has('interface-name', 'key2').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'l-interface')"
@@ -364,9 +364,9 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be l3-interface-ipv4-address-list",
                                "l3-interface-ipv4-address-list",
                                query.getResultType());
-               
+
     }
-       
+
        /**
         * Short circuit.
         *
@@ -391,7 +391,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"655\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -399,15 +399,15 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
-               String expected = 
+               String expected =
                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce')"
                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'port-group')"
                                + ".has('interface-id', 'key2').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'cvlan-tag')"
                                + ".has('cvlan-tag', 655)";
-               String expectedParent = 
+               String expectedParent =
                                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce')"
                                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'port-group')"
                                                + ".has('interface-id', 'key2')";
@@ -423,9 +423,9 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be cvlan-tag",
                                "cvlan-tag",
                                query.getResultType());
-               
+
     }
-       
+
        @Test
     public void shorterCircuit() throws JAXBException, UnsupportedEncodingException, AAIException {
                String content =
@@ -433,7 +433,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"related-to\" : \"cvlan-tag\","
                                + "\"related-link\" : \"file:///network/vces/vce/key1/port-groups/port-group/key2/cvlan-tags/cvlan-tag/655\""
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -441,15 +441,15 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
-               String expected = 
+               String expected =
                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce')"
                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'port-group')"
                                + ".has('interface-id', 'key2').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'cvlan-tag')"
                                + ".has('cvlan-tag', 655)";
-               String expectedParent = 
+               String expectedParent =
                                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce')"
                                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'port-group')"
                                                + ".has('interface-id', 'key2')";
@@ -465,9 +465,9 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be cvlan-tag",
                                "cvlan-tag",
                                query.getResultType());
-               
+
     }
-       
+
        /**
         * Double key.
         *
@@ -491,8 +491,8 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key3\""
                                + "}]"
                                + "}";
-                                               
-                                               
+
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -500,16 +500,16 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
-               String expected = 
+               String expected =
                                ".has('physical-location-id', 'key1').has('aai-node-type', 'complex')"
                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'ctag-pool')"
                                + ".has('target-pe', 'key2')"
                                + ".has('availability-zone-name', 'key3')";
-               String expectedParent = 
+               String expectedParent =
                                ".has('physical-location-id', 'key1').has('aai-node-type', 'complex')";
 
                assertEquals(
@@ -524,9 +524,9 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be ctag-pool",
                                "ctag-pool",
                                query.getResultType());
-               
+
     }
-       
+
        /**
         * Abstract type.
         *
@@ -544,8 +544,8 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key1\""
                                + " }]"
                                + "}";
-                                               
-                                               
+
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -553,18 +553,18 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
-               String expected = 
+               String expected =
                                ".has('vnf-id', 'key1')"
                                + ".has('aai-node-type', P.within('vce','generic-vnf'))";
-                               
-               String expectedParent = 
+
+               String expectedParent =
                                ".has('vnf-id', 'key1')"
                                                + ".has('aai-node-type', P.within('vce','generic-vnf'))";
-                                               
+
                assertEquals(
                                "gremlin query should be " + expected,
                                expected,
@@ -577,9 +577,9 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                "result type should be vnf",
                                "vnf",
                                query.getResultType());
-               
+
     }
-       
+
        /**
         * Invalid node name.
         *
@@ -611,7 +611,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "}";
                thrown.expect(AAIException.class);
                thrown.expectMessage(containsString("invalid object name"));
-               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -619,12 +619,12 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
        }
-       
+
        /**
         * Invalid property name.
         *
@@ -656,7 +656,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                                + "}";
                thrown.expect(AAIException.class);
                thrown.expectMessage(containsString("invalid property name"));
-               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -664,7 +664,7 @@ public class RelationshipGremlinQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
index 2846e7f..4baa944 100644 (file)
@@ -51,7 +51,7 @@ public class RelationshipQueryTest extends AAISetup {
 
        @Before
        public void setup(){
-           version = new SchemaVersion("v8");
+           version = new SchemaVersion("v10");
                dbEngine =
                        new JanusGraphDBEngine(QueryStyle.GREMLIN_TRAVERSAL,
                                loaderFactory.createLoaderForVersion(ModelType.MOXY, version),
@@ -66,7 +66,7 @@ public class RelationshipQueryTest extends AAISetup {
         */
        @Test
     public void parentQuery() throws JAXBException, UnsupportedEncodingException, AAIException {
-               
+
                String content =
                                "{"
                                + "\"related-to\" : \"pserver\","
@@ -75,7 +75,7 @@ public class RelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key1\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -83,11 +83,11 @@ public class RelationshipQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
-               String expected = 
+               String expected =
                                ".has('hostname', 'key1').has('aai-node-type', 'pserver')";
                assertEquals(
                                "gremlin query should be " + expected,
@@ -101,7 +101,7 @@ public class RelationshipQueryTest extends AAISetup {
                                "result type should be pserver",
                                "pserver",
                                query.getResultType());
-               
+
     }
 
        /**
@@ -125,7 +125,7 @@ public class RelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key2\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -133,13 +133,13 @@ public class RelationshipQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
                String expected =
                                ".has('hostname', 'key1').has('aai-node-type', 'pserver').out('hasLAGInterface').has('aai-node-type', 'lag-interface')"
                                + ".has('interface-name', 'key2')";
-               String parentExpected = 
+               String parentExpected =
                                ".has('hostname', 'key1').has('aai-node-type', 'pserver')";
                assertEquals(
                                "gremlin query should be for node",
@@ -154,7 +154,7 @@ public class RelationshipQueryTest extends AAISetup {
                                "lag-interface",
                                query.getResultType());
     }
-       
+
        /**
         * Naming exceptions.
         *
@@ -179,7 +179,7 @@ public class RelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"655\""
                                + "}]"
                                + "}";
-                                               
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -187,17 +187,17 @@ public class RelationshipQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
-               String expected = 
+               String expected =
                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce').in('org.onap.relationships.inventory.BelongsTo')"
                                + ".has('aai-node-type', 'port-group').has('interface-id', 'key2').in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'cvlan-tag')"
                                + ".has('cvlan-tag', 655)";
-               String expectedParent = 
+               String expectedParent =
                                                ".has('vnf-id', 'key1').has('aai-node-type', 'vce').in('org.onap.relationships.inventory.BelongsTo')"
                                                + ".has('aai-node-type', 'port-group').has('interface-id', 'key2')";
-               
+
                assertEquals(
                                "gremlin query should be " + expected,
                                expected,
@@ -210,9 +210,9 @@ public class RelationshipQueryTest extends AAISetup {
                                "result type should be cvlan-tag",
                                "cvlan-tag",
                                query.getResultType());
-               
+
     }
-       
+
        /**
         * Double key.
         *
@@ -237,8 +237,8 @@ public class RelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key3\""
                                + "}]"
                                + "}";
-                                               
-                                               
+
+
                Unmarshaller unmarshaller = context.createUnmarshaller();
            unmarshaller.setProperty(UnmarshallerProperties.MEDIA_TYPE, "application/json");
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
@@ -246,16 +246,16 @@ public class RelationshipQueryTest extends AAISetup {
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
-               String expected = 
+               String expected =
                                ".has('physical-location-id', 'key1').has('aai-node-type', 'complex')"
                                + ".in('org.onap.relationships.inventory.BelongsTo').has('aai-node-type', 'ctag-pool')"
                                + ".has('target-pe', 'key2')"
                                + ".has('availability-zone-name', 'key3')";
-               String expectedParent = 
+               String expectedParent =
                                ".has('physical-location-id', 'key1').has('aai-node-type', 'complex')";
 
                assertEquals(
@@ -270,7 +270,7 @@ public class RelationshipQueryTest extends AAISetup {
                                "result type should be ctag-pool",
                                "ctag-pool",
                                query.getResultType());
-               
+
     }
-       
+
 }
index f7e239b..10174b6 100644 (file)
@@ -49,14 +49,14 @@ import static org.junit.Assert.assertEquals;
 @Ignore
 public class UniqueRelationshipQueryTest extends AAISetup {
 
-       @Autowired 
+       @Autowired
        private NodeIngestor ingestor ;
-       
+
        private TransactionalGraphEngine dbEngine;
        private SchemaVersion version ;
        private DynamicJAXBContext context = ingestor.getContextForVersion(version);
        private Unmarshaller unmarshaller = null;
-       
+
        /**
         * Setup.
         *
@@ -64,7 +64,7 @@ public class UniqueRelationshipQueryTest extends AAISetup {
         */
        @Before
        public void setup() throws JAXBException {
-           version = new SchemaVersion("v8");
+           version = new SchemaVersion("v10");
                dbEngine = new JanusGraphDBEngine(QueryStyle.GREMLIN_UNIQUE,
                                loaderFactory.createLoaderForVersion(ModelType.MOXY, version),
                                false);
@@ -73,7 +73,7 @@ public class UniqueRelationshipQueryTest extends AAISetup {
            unmarshaller.setProperty(UnmarshallerProperties.JSON_INCLUDE_ROOT, false);
                unmarshaller.setProperty(UnmarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME, true);
        }
-       
+
        /**
         * Parent query.
         *
@@ -83,7 +83,7 @@ public class UniqueRelationshipQueryTest extends AAISetup {
         */
        @Test
     public void parentQuery() throws JAXBException, UnsupportedEncodingException, AAIException {
-               
+
                String content =
                                "{"
                                + "\"related-to\" : \"pserver\","
@@ -92,21 +92,21 @@ public class UniqueRelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key1\""
                                + "}]"
                                + "}";
-                                               
+
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
                String key = "pserver/key1";
-               GraphTraversal<Vertex, Vertex> expected = 
+               GraphTraversal<Vertex, Vertex> expected =
                                __.<Vertex>start().has("aai-unique-key", key);
                String resultType = "pserver";
                String containerType = "";
-               
+
                testSet(query, expected, expected, resultType, containerType);
-               
+
     }
 
        /**
@@ -129,25 +129,25 @@ public class UniqueRelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"key2\""
                                + "}]"
                                + "}";
-                                               
+
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
                String key = "pserver/key1/lag-interface/key2";
-               GraphTraversal<Vertex, Vertex> expected = 
+               GraphTraversal<Vertex, Vertex> expected =
                                __.<Vertex>start().has("aai-unique-key", key);
-               GraphTraversal<Vertex, Vertex> parentExpected = 
+               GraphTraversal<Vertex, Vertex> parentExpected =
                                __.<Vertex>start().has("aai-unique-key", "pserver/key1");
                String resultType = "lag-interface";
                String containerType = "";
-               
+
                testSet(query, expected, parentExpected, resultType, containerType);
     }
-       
+
        /**
         * Naming exceptions.
         *
@@ -171,25 +171,25 @@ public class UniqueRelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"655\""
                                + "}]"
                                + "}";
-                                               
+
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
                String key = "vce/key1/port-group/key2/cvlan-tag/655";
-               GraphTraversal<Vertex, Vertex> expected = 
+               GraphTraversal<Vertex, Vertex> expected =
                                __.<Vertex>start().has("aai-unique-key", key);
-               GraphTraversal<Vertex, Vertex> parentExpected = 
+               GraphTraversal<Vertex, Vertex> parentExpected =
                                __.<Vertex>start().has("aai-unique-key", "vce/key1/port-group/key2");
                String resultType = "cvlan-tag";
                String containerType = "";
-               
+
                testSet(query, expected, parentExpected, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Double key.
         *
@@ -210,26 +210,26 @@ public class UniqueRelationshipQueryTest extends AAISetup {
                                + " \"relationship-value\" : \"key2\""
                                + " }]"
                                + "}";
-                                               
+
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
 
                String key = "service-capability/key1/key2";
-               GraphTraversal<Vertex, Vertex> expected = 
+               GraphTraversal<Vertex, Vertex> expected =
                                __.<Vertex>start().has("aai-unique-key", key);
-               GraphTraversal<Vertex, Vertex> parentExpected = 
+               GraphTraversal<Vertex, Vertex> parentExpected =
                                __.<Vertex>start().has("aai-unique-key", "service-capability/key1/key2");
                String resultType = "service-capability";
                String containerType = "";
-               
+
                testSet(query, expected, parentExpected, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Short circuit.
         *
@@ -254,11 +254,11 @@ public class UniqueRelationshipQueryTest extends AAISetup {
                                + "\"relationship-value\" : \"655\""
                                + "}]"
                                + "}";
-                                               
+
                Object obj = context.newDynamicEntity("Relationship");
 
                DynamicEntity entity = (DynamicEntity)unmarshaller.unmarshal(new StreamSource(new StringReader(content)), obj.getClass()).getValue();
-                       
+
                Introspector wrappedObj = IntrospectorFactory.newInstance(ModelType.MOXY, entity);
                QueryParser query = dbEngine.getQueryBuilder().createQueryFromRelationship(wrappedObj);
                String key = "vce/key1/port-group/key2/cvlan-tag/655";
@@ -266,11 +266,11 @@ public class UniqueRelationshipQueryTest extends AAISetup {
                GraphTraversal<Vertex, Vertex> parentExpected = __.<Vertex>start().has("aai-unique-key", "vce/key1/port-group/key2");
                String resultType = "cvlan-tag";
                String containerType = "";
-               
+
                testSet(query, expected, parentExpected, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Test set.
         *
index 5c31fd0..a173a37 100644 (file)
@@ -47,7 +47,7 @@ public class UniqueURIQueryTest extends AAISetup {
        private TransactionalGraphEngine dbEngine;
        private SchemaVersion version;
        private DynamicJAXBContext context = nodeIngestor.getContextForVersion(version);
-       
+
        /**
         * Parent query.
         *
@@ -56,7 +56,7 @@ public class UniqueURIQueryTest extends AAISetup {
         */
        @Test
     public void parentQuery() throws UnsupportedEncodingException, AAIException {
-           version = new SchemaVersion("v8");
+           version = new SchemaVersion("v10");
            dbEngine = new JanusGraphDBEngine(QueryStyle.GREMLIN_UNIQUE,
                                loaderFactory.createLoaderForVersion(ModelType.MOXY, version),
                                false);
@@ -67,11 +67,11 @@ public class UniqueURIQueryTest extends AAISetup {
                String parentResultType = "";
                String resultType = "complex";
                String containerType = "";
-               
+
                testSet(query, expected, expected, parentResultType, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Parent plural query.
         *
@@ -86,9 +86,9 @@ public class UniqueURIQueryTest extends AAISetup {
                String parentResultType = "";
                String resultType = "complex";
                String containerType = "complexes";
-               
+
                testSet(query, expected, expected, parentResultType, resultType, containerType);
-               
+
     }
 
        /**
@@ -108,11 +108,11 @@ public class UniqueURIQueryTest extends AAISetup {
                String parentResultType = "complex";
                String resultType = "ctag-pool";
                String containerType = "";
-               
+
                testSet(query, expected, parentExpected, parentResultType, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Naming exceptions.
         *
@@ -130,11 +130,11 @@ public class UniqueURIQueryTest extends AAISetup {
                String parentResultType = "port-group";
                String resultType = "cvlan-tag";
                String containerType = "";
-               
+
                testSet(query, expected, parentExpected, parentResultType, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Gets the all.
         *
@@ -153,11 +153,11 @@ public class UniqueURIQueryTest extends AAISetup {
                String parentResultType = "port-group";
                String resultType = "cvlan-tag";
                String containerType = "cvlan-tags";
-               
+
                testSet(query, expected, parentExpected, parentResultType, resultType, containerType);
-               
+
     }
-       
+
        /**
         * Test set.
         *
index 363def6..f3b8577 100644 (file)
@@ -30,6 +30,7 @@ import org.onap.aai.introspection.*;
 import org.onap.aai.parsers.exceptions.AAIIdentityMapParseException;
 import org.onap.aai.parsers.exceptions.AmbiguousMapAAIException;
 import org.onap.aai.setup.SchemaVersion;
+import org.springframework.test.annotation.DirtiesContext;
 
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -40,11 +41,11 @@ import static org.hamcrest.Matchers.hasProperty;
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class RelationshipToURITest extends AAISetup {
 
        private final ModelType modelType = ModelType.MOXY;
        private final SchemaVersion version10 = new SchemaVersion("v10");
-       private final SchemaVersion version9 = new SchemaVersion("v9");
        
        
        @Rule
@@ -89,35 +90,6 @@ public class RelationshipToURITest extends AAISetup {
                
        }
        
-       @Test
-       public void successV9() throws AAIException, URISyntaxException, IOException {
-               Loader loader = loaderFactory.createLoaderForVersion(modelType, version9);
-               Introspector obj = loader.unmarshal("relationship", this.getJsonString("both-failv10-successv9.json"));
-               URI expected = new URI("/network/generic-vnfs/generic-vnf/key2");
-               
-               RelationshipToURI parse = new RelationshipToURI(loader, obj);
-               URI uri = parse.getUri();
-               
-               assertEquals("related-link is equal", expected, uri);
-
-               
-       }
-       
-       @Test
-       public void failV9() throws AAIException, URISyntaxException, IOException {
-               Loader loader = loaderFactory.createLoaderForVersion(modelType, version9);
-               Introspector obj = loader.unmarshal("relationship", this.getJsonString("both-successv10-failv9.json"));
-               URI expected = new URI("/network/generic-vnfs/generic-vnf/key1");
-               
-               thrown.expect(AAIIdentityMapParseException.class);
-               thrown.expect(hasProperty("code", is("AAI_3000")));
-               RelationshipToURI parse = new RelationshipToURI(loader, obj);
-               
-
-               URI uri = parse.getUri();
-               
-       }
-       
        @Test
        public void failNothingToParse() throws AAIException, URISyntaxException, IOException {
                Loader loader = loaderFactory.createLoaderForVersion(modelType, version10);
index b585f0c..42cfd92 100644 (file)
@@ -54,7 +54,7 @@ public class URIParserTest extends AAISetup {
         */
        @PostConstruct
        public void createLoader(){
-               loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, new SchemaVersion("v8"));
+               loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, new SchemaVersion("v10"));
        }
 
        @Test
index 4f949f9..16cc14a 100644 (file)
@@ -38,7 +38,7 @@ import static org.junit.Assert.assertEquals;
 public class URIToExtensionInformationTest extends AAISetup {
 
        
-       private Loader v8Loader ;
+       private Loader specificLoader ;
        
        /**
         * Vservers V 7.
@@ -51,13 +51,13 @@ public class URIToExtensionInformationTest extends AAISetup {
        
        @PostConstruct
        public void createLoader(){
-               v8Loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, new SchemaVersion("v8"));
+               specificLoader = loaderFactory.createLoaderForVersion(ModelType.MOXY, new SchemaVersion("v10"));
        }
        
        @Test
     public void vserversV8() throws JAXBException, AAIException, IllegalArgumentException, UnsupportedEncodingException {
-               URI uri = UriBuilder.fromPath("/aai/" + v8Loader.getVersion() + "/cloud-infrastructure/cloud-regions/cloud-region/testOwner1/testRegion1/tenants/tenant/key1/vservers/vserver/key2").build();
-               URIToExtensionInformation parse = new URIToExtensionInformation(v8Loader, uri);
+               URI uri = UriBuilder.fromPath("/aai/" + specificLoader.getVersion() + "/cloud-infrastructure/cloud-regions/cloud-region/testOwner1/testRegion1/tenants/tenant/key1/vservers/vserver/key2").build();
+               URIToExtensionInformation parse = new URIToExtensionInformation(specificLoader, uri);
                
                String namespace = "cloudInfrastructure";
                String preMethodName = "DynamicAddCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverPreProc";
index fc2c64a..c2a25ea 100644 (file)
@@ -31,6 +31,7 @@ import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.*;
 import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.springframework.test.annotation.DirtiesContext;
 
 import javax.annotation.PostConstruct;
 import javax.ws.rs.core.UriBuilder;
@@ -43,6 +44,7 @@ import static org.hamcrest.Matchers.hasProperty;
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
 
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class URIToObjectTest extends AAISetup {
 
        private SchemaVersion version ;
index ffb5605..7c8d6c9 100644 (file)
@@ -74,7 +74,9 @@ import static org.junit.Assert.*;
 })
 @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
 @TestPropertySource(properties = {
-    "schema.translator.list = config"
+    "schema.translator.list = config",
+    "schema.nodes.location=src/test/resources/onap/oxm",
+    "schema.edges.location=src/test/resources/onap/dbedgerules"
 })
 public abstract class QueryBuilderTestAbstraction {
 
@@ -84,7 +86,7 @@ public abstract class QueryBuilderTestAbstraction {
 
        @Autowired
        protected EdgeSerializer testEdgeSer;
-       
+
        @Autowired
        protected LoaderFactory loaderFactory;
 
@@ -103,7 +105,7 @@ public abstract class QueryBuilderTestAbstraction {
        public void configure() throws Exception {
            loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
 
-               
+
                g = graph.traversal();
        }
 
@@ -116,39 +118,39 @@ public abstract class QueryBuilderTestAbstraction {
        public static void teardown() throws Exception {
                graph.close();
        }
-       
+
        @Test
        public void createEdgeGVnfToVnfcTraversal() throws AAIException {
-                               
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","myvnf").next();
                Vertex vnfc = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                testEdgeSer.addEdge(g, gvnf, vnfc, "uses");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "vnfc");
-               
+
                assertEquals(vnfc, tQ.next());
-               
+
 
        }
-       
+
        @Test
        public void createEdgeLinterfaceToLogicalLinkTraversal() throws AAIException {
-                               
+
                Vertex lInterface = g.addV("aai-node-type","l-interface","interface-name","l-interface-a").next();
                Vertex logicalLink = g.addV("aai-node-type","logical-link","link-name","logical-link-a").next();
                testEdgeSer.addEdge(g, lInterface, logicalLink, "sourceLInterface");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(lInterface);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "l-interface", "logical-link");
-               
+
                Vertex next = tQ.next();
-               
+
                assertEquals(logicalLink, next);
-               
+
 
        }
-       
+
        @SuppressWarnings("rawtypes")
        @Test
        public void createEdgeLinterfaceToLogicalLinkTraversal_tree() throws AAIException {
@@ -200,263 +202,263 @@ public abstract class QueryBuilderTestAbstraction {
 
        @Test
        public void createEdgeLinterfaceToLogicalLinkIntrospectorTraversal() throws AAIException {
-                               
+
                Vertex lInterface = g.addV("aai-node-type","l-interface","interface-name","l-interface-a").next();
                Vertex logicalLink = g.addV("aai-node-type","logical-link","link-name","logical-link-a").next();
                testEdgeSer.addEdge(g, lInterface, logicalLink, "sourceLInterface");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(lInterface);
                tQ.createEdgeTraversal(EdgeType.COUSIN, loader.introspectorFromName("l-interface"), loader.introspectorFromName("logical-link"));
-               
+
                Vertex next = tQ.next();
-               
+
                assertEquals(logicalLink, next);
-               
+
 
        }
-       
+
        @Test
        public void createEdgeLinterfaceToLogicalLinkVertexToIntrospectorTraversal() throws AAIException {
-                               
+
                Vertex lInterface = g.addV("aai-node-type","l-interface","interface-name","l-interface-a").next();
                Vertex logicalLink = g.addV("aai-node-type","logical-link","link-name","logical-link-a").next();
                testEdgeSer.addEdge(g, lInterface, logicalLink, "sourceLInterface");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(lInterface);
                tQ.createEdgeTraversal(EdgeType.COUSIN, lInterface, loader.introspectorFromName("logical-link"));
-               
+
                Vertex next = tQ.next();
-               
+
                assertEquals(logicalLink, next);
-               
+
 
        }
-       
+
        @Test
        public void edgeToVertexTraversalTest() throws AAIException {
-                               
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, vnfc1);
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "vnfc");
-               
+
                List<Vertex> list = tQ.toList();
 
                assertEquals("Has 1 vertexes ", 1, list.size());
                assertTrue("Has vertex on the default edge ", list.contains(vnfc1));
-               
+
 
        }
-       
+
        @Test
        public void edgeToVertexTraversalSingleOutRuleTest() throws AAIException {
-                               
+
                Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
                Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
-               
+
                testEdgeSer.addEdge(g, vce, vnfc1);
-               
+
                QueryBuilder<Vertex> tQ1 = getNewVertexTraversalWithTestEdgeRules(vce);
                tQ1.createEdgeTraversal(EdgeType.COUSIN, "vce", "vnfc");
-               
+
                QueryBuilder<Vertex> tQ2 = getNewVertexTraversalWithTestEdgeRules(vnfc1);
                tQ2.createEdgeTraversal(EdgeType.COUSIN, "vnfc", "vce");
-               
+
                List<Vertex> list1 = tQ1.toList();
                List<Vertex> list2 = tQ2.toList();
-               
+
                assertEquals("1 - Has 1 vertexes ", 1, list1.size());
                assertTrue("1 - traversal results in vnfc ", list1.contains(vnfc1));
                assertEquals("2 - Has 1 vertexes ", 1, list2.size());
                assertTrue("2 - traversal results in vce ", list2.contains(vce));
-               
+
 
        }
-       
+
        @Test
        public void edgeToVertexTraversalSingleInRuleTest() throws AAIException {
-                               
+
                Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                testEdgeSer.addEdge(g, vce, pserver);
-               
+
                QueryBuilder<Vertex> tQ1 = getNewVertexTraversalWithTestEdgeRules(vce);
                tQ1.createEdgeTraversal(EdgeType.COUSIN, "vce", "pserver");
-               
+
                List<Vertex> list = tQ1.toList();
 
                assertEquals("1 - Has 1 vertexes ", 1, list.size());
                assertTrue("1 - traversal results in vnfc ", list.contains(pserver));
-               
+
 
        }
-       
+
        @Test
        public void edgeToVertexMultiRuleTraversalTest() throws AAIException {
-                               
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                Vertex vnfc2 = g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, vnfc1);
                testEdgeSer.addEdge(g, gvnf, vnfc2, "re-uses");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "vnfc");
-               
+
                List<Vertex> list = tQ.toList();
 
                assertEquals("Has 2 vertexes ", 2, list.size());
                assertTrue("Has vertex on the default edge ", list.contains(vnfc1));
                assertTrue("Has vertex on the re-uses edge ", list.contains(vnfc2));
-               
+
 
        }
-       
+
        @Test
        public void edgeToVertexMultiLabelTest() throws AAIException {
-                               
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
                Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, vnfc1);
                testEdgeSer.addEdge(g, pserver, vnfc1);
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(vnfc1);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "vnfc", "generic-vnf");
-               
+
                List<Vertex> list = tQ.toList();
 
                assertEquals("Has 1 vertexes ", 1, list.size());
                assertTrue("Only returns the generic vnf vertex", list.contains(gvnf));
-               
+
 
        }
-       
+
        @Test
        public void limitTraversalTest() throws AAIException {
-                               
+
                g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
-               
+
                QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g);
                tQ.getVerticesByProperty("aai-node-type","vnfc").limit(1);
-               
+
                List<Vertex> list = tQ.toList();
 
                assertEquals("Has 1 vertexes ", 1, list.size());
-       
+
 
        }
-       
+
        @Test
        public void getVertexesByPropertiesTraversalTest() throws AAIException {
-                               
+
                g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
-               
+
                QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g);
                tQ.getVerticesByProperty("vnfc-name", Arrays.asList("a-name", "b-name"));
-               
+
                List<Vertex> list = tQ.toList();
 
                assertEquals("Has 2 vertexes ", 2, list.size());
-       
+
 
        }
-       
+
        @Test
        public void getVertexesByIndexedPropertyTraversalTest() throws AAIException {
-                               
+
                g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
-               
+
                QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g);
                tQ.getVerticesByIndexedProperty("aai-node-type","vnfc");
-               
+
                List<Vertex> list = tQ.toList();
 
                assertEquals("Has 2 vertexes ", 2, list.size());
-       
+
 
        }
-       
+
        @Test
        public void dedupTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, pserver);
                testEdgeSer.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver").dedup();
-               
+
                List<Vertex> list = tQ.toList();
-       
+
                assertEquals("Has 2 vertexes ", 1, list.size());
                assertTrue("result has pserver ", list.contains(pserver));
-               
+
 
        }
-       
+
        @Test
        public void storeCapTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, pserver);
                testEdgeSer.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
-               
+
                GremlinTraversal<BulkSet<Vertex>> tQ = new GremlinTraversal<>(loader, g, gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver").store("x").cap("x");
-               
+
                List<BulkSet<Vertex>> list = tQ.toList();
-       
+
                assertEquals("Has 2 vertexes ", 1, list.size());
                assertEquals("result has pserver ",pserver, list.get(0).iterator().next());
-               
+
 
        }
-       
+
        @Test
        public void storeCapUnfoldTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, pserver);
                testEdgeSer.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver").store("x").cap("x").unfold();
-               
+
                List<Vertex> list = tQ.toList();
-       
+
                assertEquals("Has 2 vertexes ", 2, list.size());
                assertTrue("result has pserver ", list.contains(pserver));
-               
+
 
        }
-       
+
        @Test
        public void nextAndHasNextTraversalTest() throws AAIException {
-                               
+
                Vertex v1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                Vertex v2 = g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
-               
+
                QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g);
                tQ.getVerticesByProperty("aai-node-type","vnfc");
-               
+
                List<Vertex> list = new ArrayList<>();
-               
+
                assertTrue("Has next 1 ",tQ.hasNext());
                list.add(tQ.next());
                assertTrue("Has next 2 ",tQ.hasNext());
@@ -465,146 +467,146 @@ public abstract class QueryBuilderTestAbstraction {
                assertTrue("Has all the vertexes", list.contains(v1) && list.remove(v2));
 
        }
-       
+
        @Test
        public void edgeToVertexMultiRuleOutTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, pserver);
                testEdgeSer.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver");
-               
+
                List<Vertex> list = tQ.toList();
-       
+
                assertEquals("Has 2 vertexes ", 2, list.size());
                assertTrue("result has pserver ", list.contains(pserver));
-               
+
 
        }
-       
+
        @Test
        public void edgeToVertexMultiRuleInTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex complex = g.addV("aai-node-type","complex","physical-location-id","a-name").next();
-               
+
                testEdgeSer.addEdge(g, gvnf, complex);
                testEdgeSer.addEdge(g, gvnf, complex, "complex-generic-vnf-B");
-               
+
                QueryBuilder<Vertex> tQ = getNewVertexTraversalWithTestEdgeRules(gvnf);
                tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "complex");
-               
+
                List<Vertex> list = tQ.toList();
-       
+
                assertEquals("Has 2 vertexes ", 2, list.size());
                assertTrue("result has pserver ", list.contains(complex));
-               
+
 
        }
 
        @Test
        public void edgeTraversalSingleInRuleTest() throws AAIException {
-                               
+
                Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                Edge e = testEdgeSer.addEdge(g, vce, pserver);
-               
+
                QueryBuilder<Edge> tQ1 = getNewEdgeTraversalWithTestEdgeRules(vce);
                tQ1.getEdgesBetween(EdgeType.COUSIN, "vce", "pserver");
-               
+
                List<Edge> list = tQ1.toList();
 
                assertEquals("1 - Has 1 edge ", 1, list.size());
                assertTrue("1 - traversal results in edge ", list.contains(e));
-               
+
 
        }
-       
+
        @Test
        public void edgeTraversalSingleOutRuleTest() throws AAIException {
-                               
+
                Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
                Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
-               
+
                Edge e = testEdgeSer.addEdge(g, vce, vnfc1);
-               
+
                QueryBuilder<Edge> tQ1 = getNewEdgeTraversalWithTestEdgeRules(vce);
                tQ1.getEdgesBetween(EdgeType.COUSIN, "vce", "vnfc");
-               
+
                List<Edge> list1 = tQ1.toList();
-               
+
                assertEquals("1 - Has 1 edge ", 1, list1.size());
                assertTrue("1 - traversal results in edge ", list1.contains(e));
-               
+
 
        }
 
        @Test
        public void edgeTraversalMultiRuleOutTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
-               
+
                Edge e1 = testEdgeSer.addEdge(g, gvnf, pserver);
                Edge e2 = testEdgeSer.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
-               
+
                QueryBuilder<Edge> tQ = getNewEdgeTraversalWithTestEdgeRules(gvnf);
                tQ.getEdgesBetween(EdgeType.COUSIN, "generic-vnf", "pserver");
-               
+
                List<Edge> list = tQ.toList();
-       
+
                assertEquals("Has 2 edges ", 2, list.size());
                assertTrue("result has default edge ", list.contains(e1));
                assertTrue("result has other edge ", list.contains(e2));
-               
+
 
        }
-       
+
        @Test
        public void edgeTraversalMultiRuleInTraversalTest() throws AAIException {
-                       
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex complex = g.addV("aai-node-type","complex","physical-location-id","a-name").next();
-               
+
                Edge e1 = testEdgeSer.addEdge(g, gvnf, complex);
                Edge e2 = testEdgeSer.addEdge(g, gvnf, complex, "complex-generic-vnf-B");
-               
+
                QueryBuilder<Edge> tQ = getNewEdgeTraversalWithTestEdgeRules(gvnf);
                tQ.getEdgesBetween(EdgeType.COUSIN, "generic-vnf", "complex");
-               
+
                List<Edge> list = tQ.toList();
-       
+
                assertEquals("Has 2 edges ", 2, list.size());
                assertTrue("result has default edge ", list.contains(e1));
                assertTrue("result has other edge ", list.contains(e2));
-               
+
 
        }
-       
+
        @Test
        public void edgeTraversalMultiRuleTraversalTest() throws AAIException {
-                               
+
                Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
                Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
                Vertex vnfc2 = g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
-               
+
                Edge e1 = testEdgeSer.addEdge(g, gvnf, vnfc1);
                Edge e2 = testEdgeSer.addEdge(g, gvnf, vnfc2, "re-uses");
-               
+
                QueryBuilder<Edge> tQ = getNewEdgeTraversalWithTestEdgeRules(gvnf);
                tQ.getEdgesBetween(EdgeType.COUSIN, "generic-vnf", "vnfc");
-               
+
                List<Edge> list = tQ.toList();
 
                assertEquals("Has 2 edges ", 2, list.size());
                assertTrue("result has default edge ", list.contains(e1));
                assertTrue("result has other edge ", list.contains(e2));
-               
+
 
        }
 
@@ -727,11 +729,11 @@ public abstract class QueryBuilderTestAbstraction {
        }
 
        protected abstract QueryBuilder<Edge> getNewEdgeTraversalWithTestEdgeRules(Vertex v);
-       
+
        protected abstract QueryBuilder<Edge> getNewEdgeTraversalWithTestEdgeRules();
-       
+
        protected abstract QueryBuilder<Vertex> getNewVertexTraversalWithTestEdgeRules(Vertex v);
-       
+
        protected abstract QueryBuilder<Vertex> getNewVertexTraversalWithTestEdgeRules();
 
        protected abstract QueryBuilder<Tree> getNewTreeTraversalWithTestEdgeRules(Vertex v);
@@ -741,5 +743,5 @@ public abstract class QueryBuilderTestAbstraction {
        protected abstract QueryBuilder<Path> getNewPathTraversalWithTestEdgeRules(Vertex v);
 
        protected abstract QueryBuilder<Path> getNewPathTraversalWithTestEdgeRules();
-               
+
 }
index 71e53be..f0618b0 100644 (file)
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.janusgraph.core.JanusGraph;
 import org.janusgraph.core.JanusGraphTransaction;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.onap.aai.AAISetup;
 import org.onap.aai.HttpTestUtil;
@@ -71,12 +72,16 @@ public class PserverDuplicateTest extends AAISetup {
             .mapToObj((i) -> (Callable<Void>) () -> {
                 JanusGraphTransaction transaction = janusGraph.newTransaction();
                 GraphTraversalSource g = transaction.traversal();
-                g.addV()
-                    .property(AAIProperties.AAI_URI, aaiUri)
-                    .property(AAIProperties.NODE_TYPE, "pserver")
-                    .property("hostname", hostname)
-                    .next();
-                transaction.commit();
+                try {
+                    g.addV()
+                        .property(AAIProperties.AAI_URI, aaiUri)
+                        .property(AAIProperties.NODE_TYPE, "pserver")
+                        .property("hostname", hostname)
+                        .next();
+                    transaction.commit();
+                } catch (Exception e) {
+                    throw new Exception("Duplicate was found, error");
+                }
                 return null;
             }).collect(Collectors.toList())
             , 7, TimeUnit.SECONDS
@@ -97,7 +102,7 @@ public class PserverDuplicateTest extends AAISetup {
     }
 
 
-    @Test
+    @Ignore
     public void testWhenDuplicatesExistInGraphThatGetAllSuceeds() throws InterruptedException {
 
         int totalRetries = getNumOfRetries();
index 8ff5683..f7bea7c 100644 (file)
@@ -33,6 +33,7 @@ import org.onap.aai.introspection.*;
 
 import org.onap.aai.serialization.engines.QueryStyle;
 import org.skyscreamer.jsonassert.JSONAssert;
+import org.springframework.test.annotation.DirtiesContext;
 
 import javax.ws.rs.core.Response;
 import java.util.Arrays;
@@ -44,6 +45,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 @RunWith(value = Parameterized.class)
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
 public class PserverTest extends AAISetup{
 
     private static EELFLogger logger = EELFManager.getInstance().getLogger(PserverTest.class);
index 77ee36c..d63220b 100644 (file)
@@ -30,6 +30,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.onap.aai.AAISetup;
+import org.onap.aai.DataLinkSetup;
 import org.onap.aai.dbmap.DBConnectionType;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.*;
@@ -57,7 +58,7 @@ import static org.mockito.Mockito.when;
 
 @RunWith(value = Parameterized.class)
 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-public class DbAliasTest extends AAISetup {
+public class DbAliasTest extends DataLinkSetup {
 
        private JanusGraph graph;
 
index 42775cb..cbc1bd9 100644 (file)
@@ -28,6 +28,7 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.onap.aai.AAISetup;
+import org.onap.aai.util.AAIConstants;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.dbmap.DBConnectionType;
 import org.onap.aai.edges.EdgeIngestor;
@@ -456,6 +457,14 @@ public class DbSerializerTest extends AAISetup {
 
        }
 
+       @Test
+       public void verifyResourceVersion_DeleteTest() throws AAIException {
+               engine.startTransaction();
+
+               assertTrue (dbser.verifyResourceVersion("delete", "generic-vnf", "current-res-ver", AAIConstants.AAI_RESVERSION_DISABLED_UUID_DEFAULT,
+                               "generic-vnfs/generic-vnf/myid"));
+
+       }
        @Test
        public void trimClassNameTest() throws AAIException {
                assertEquals("GenericVnf", dbser.trimClassName("GenericVnf"));
index 1226eda..a74ceee 100644 (file)
@@ -69,7 +69,9 @@ import static org.mockito.Mockito.when;
                IntrospectionConfig.class
 })
 @TestPropertySource(properties = {
-    "schema.translator.list = config"
+    "schema.translator.list = config",
+    "schema.nodes.location=src/test/resources/onap/oxm",
+    "schema.edges.location=src/test/resources/onap/dbedgerules"
 })
 public class DbSerializer_needsFakeRulesTest {
 
@@ -79,7 +81,7 @@ public class DbSerializer_needsFakeRulesTest {
        public ExpectedException thrown = ExpectedException.none();
 
        protected static Graph graph;
-       
+
        @Autowired
        protected EdgeSerializer edgeSer;
        @Autowired
@@ -114,7 +116,7 @@ public class DbSerializer_needsFakeRulesTest {
                System.setProperty("AJSC_HOME", ".");
         System.setProperty("BUNDLECONFIG_DIR", "src/test/resources/bundleconfig-local");
         QueryFormatTestHelper.setFinalStatic(AAIConstants.class.getField("AAI_HOME_ETC_OXM"), "src/test/resources/bundleconfig-local/etc/oxm/");
-  
+
        }
 
        @Before
@@ -636,8 +638,8 @@ public class DbSerializer_needsFakeRulesTest {
 
        private DBSerializer getDBSerializerWithSpecificEdgeRules()
                        throws NoSuchFieldException, AAIException, IllegalAccessException {
-               
-               
+
+
                DBSerializer localDbser = new DBSerializer(version, engine, introspectorFactoryType, "AAI-TEST");
                return localDbser;
        }
index f1d2fd6..6d17674 100644 (file)
@@ -46,7 +46,7 @@ public class TreeBackedVertexTest {
                
                startKey = g.addV(T.label, "vserver").as("v1").property("test", "hello")
                                .addV(T.label, "vserver").as("v2")
-                               .addV(T.label, "interface").property("name", "interface 1").as("v7").addInE("hasChild", "v2").property(EdgeProperty.CONTAINS.toString(), true)
+                               .addV(T.label, "interface").property("name", "interface 1").as("v10").addInE("hasChild", "v2").property(EdgeProperty.CONTAINS.toString(), true)
                                .addV(T.label, "pserver").property("name", "pserver 1").as("v4").addOutE("runsOn", "v1").property(EdgeProperty.CONTAINS.toString(), false)
                                .addV(T.label, "interface").property("name", "interface 2").as("v3").addInE("hasChild", "v1").property(EdgeProperty.CONTAINS.toString(), true)
                                .addV(T.label, "address").property("name", "address 1").addInE("hasChild", "v3").property(EdgeProperty.CONTAINS.toString(), true)
diff --git a/aai-core/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforDataLink.java b/aai-core/src/test/java/org/onap/aai/testutils/TestUtilConfigTranslatorforDataLink.java
new file mode 100644 (file)
index 0000000..36d5fe7
--- /dev/null
@@ -0,0 +1,56 @@
+/** 
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-18 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.aai.testutils;
+
+import org.onap.aai.setup.ConfigTranslator;
+import org.onap.aai.setup.SchemaLocationsBean;
+import org.onap.aai.setup.SchemaVersion;
+import org.onap.aai.setup.SchemaVersions;
+
+import java.util.*;
+
+public class TestUtilConfigTranslatorforDataLink extends ConfigTranslator {
+
+       public TestUtilConfigTranslatorforDataLink(SchemaLocationsBean bean, SchemaVersions schemaVersions) {
+               super(bean, schemaVersions);
+       }
+
+       @Override
+       public Map<SchemaVersion, List<String>> getNodeFiles() {
+
+               Map<SchemaVersion, List<String>> input = new TreeMap<>();
+               input.put(new SchemaVersion("v1"), Arrays.asList("src/test/resources/oxm/dbalias_oxm_one.xml"));
+               input.put(new SchemaVersion("v2"), Arrays.asList("src/test/resources/oxm/dbalias_oxm_two.xml"));
+               input.put(new SchemaVersion("v3"), Arrays.asList("src/test/resources/oxm/dbalias_oxm_three.xml"));
+               input.put(new SchemaVersion("v4"), Arrays.asList("src/test/resources/oxm/dbalias_oxm_four.xml"));
+               return input;
+       }
+
+       @Override
+       public Map<SchemaVersion, List<String>> getEdgeFiles() {
+               Map<SchemaVersion, List<String>> input = new TreeMap<>();
+               input.put(new SchemaVersion("v1"), Arrays.asList("src/test/resources/dbedgerules/DbEdgerules_one.json"));
+               input.put(new SchemaVersion("v2"), Arrays.asList("src/test/resources/dbedgerules/DbEdgerules_two.json"));
+               input.put(new SchemaVersion("v3"), Arrays.asList("src/test/resources/dbedgerules/DbEdgerules_three.json"));
+               input.put(new SchemaVersion("v4"), Arrays.asList("src/test/resources/dbedgerules/DbEdgerules_four.json"));
+               return input;
+       }
+}
index b19a524..c839619 100644 (file)
@@ -32,6 +32,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
+import org.apache.commons.lang.StringUtils;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -330,19 +331,22 @@ public class NodesYAMLfromOXMTest {
                sb.append("          null\n      parameters:\n");
                sb.append("        - name: global-customer-id\n");
                sb.append("          in: query\n");
-               sb.append("          description:\n");
+               sb.append("          description: Global customer id used across to uniquely identify customer.\n");
                sb.append("          required: false\n");
                sb.append("          type: string\n");
+               sb.append("          example: __GLOBAL-CUSTOMER-ID__\n");
                sb.append("        - name: subscriber-name\n");
                sb.append("          in: query\n");
-               sb.append("          description:\n");
+               sb.append("          description: Subscriber name, an alternate way to retrieve a customer.\n");
                sb.append("          required: false\n");
                sb.append("          type: string\n");
+               sb.append("          example: __SUBSCRIBER-NAME__\n");
                sb.append("        - name: subscriber-type\n");
                sb.append("          in: query\n");
-               sb.append("          description:\n");
+               sb.append("          description: Subscriber type, a way to provide VID with only the INFRA customers.\n");
                sb.append("          required: false\n");
                sb.append("          type: string\n");
+               sb.append("          example: __SUBSCRIBER-TYPE__\n");
                sb.append("  /nodes/service-subscriptions?parameter=value[&parameter2=value2]:\n");
                sb.append("    get:\n");
                sb.append("      tags:\n");
@@ -362,9 +366,10 @@ public class NodesYAMLfromOXMTest {
                sb.append("          null\n      parameters:\n");
                sb.append("        - name: service-type\n");
                sb.append("          in: query\n");
-               sb.append("          description:\n");
+               sb.append("          description: Value defined by orchestration to identify this service.\n");
                sb.append("          required: false\n");
                sb.append("          type: string\n");
+               sb.append("          example: __SERVICE-TYPE__\n");
                return sb.toString();
        }
        public String YAMLdefs() {
index cfab4cc..6058ece 100644 (file)
@@ -70,16 +70,16 @@ public class XSDElementTest {
 
        @Before
        public void setUp() throws Exception {
-                       setUp(0);
+               setUp(0);
        }
-       
-       public void setUp(int sbopt) throws Exception {
+               
+       public void setUp( int sbopt ) throws Exception {
                StringBuilder sb = new StringBuilder(maxSizeForXml);
                addNamespace(sb);
                addBusiness(sb);
-               addCustomers(sb);               
+               addCustomers(sb);
                if ( sbopt == 0 ) {
-                       addCustomer(sb);        
+                       addCustomer(sb);
                } else {
                        addCustomerNoSubscriberType(sb);
                        addCustomerSubscriberType(sb);
@@ -89,7 +89,7 @@ public class XSDElementTest {
                addEndOfXML(sb);
                testXML = sb.toString();
                init();
-       }
+}
        
        private void addNamespace(StringBuilder sb){
                sb.append("<xml-bindings xmlns=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm\" package-name=\"inventory.aai.onap.org.v11\" xml-mapping-metadata-complete=\"true\">\n");
@@ -192,7 +192,6 @@ public class XSDElementTest {
                sb.append("</xml-properties>\n");
                sb.append("</xml-element>\n");
                sb.append("<xml-element java-attribute=\"serviceSubscriptions\" name=\"service-subscriptions\" type=\"inventory.aai.onap.org.v11.ServiceSubscriptions\" />\n");
-//             sb.append("<xml-element java-attribute=\"relationshipList\" name=\"relationship-list\" type=\"inventory.aai.onap.org.v11.RelationshipList\" />\n");
                sb.append("</java-attributes>\n");
                sb.append("<xml-properties>\n");
                sb.append("<xml-property name=\"description\" value=\"customer identifiers to provide linkage back to BSS information.\" />\n");
@@ -204,7 +203,7 @@ public class XSDElementTest {
                sb.append("<xml-property name=\"namespace\" value=\"business\" />\n");
                sb.append("</xml-properties>\n");
                sb.append("</java-type>\n");            
-       }
+       }       
        
        private void addCustomerSubscriberType(StringBuilder sb){
                sb.append("<java-type name=\"Customer\">\n");
@@ -222,7 +221,7 @@ public class XSDElementTest {
                sb.append("<xml-property name=\"container\" value=\"customers\" />\n");
                sb.append("</xml-properties>\n");
                sb.append("</java-type>\n");            
-       }
+       }       
        
        private void addServiceSubscriptions(StringBuilder sb){
                sb.append("<java-type name=\"ServiceSubscriptions\">\n");
diff --git a/aai-core/src/test/resources/dbedgerules/DbEdgerules_four.json b/aai-core/src/test/resources/dbedgerules/DbEdgerules_four.json
new file mode 100644 (file)
index 0000000..e2abdbc
--- /dev/null
@@ -0,0 +1,1808 @@
+{
+  "rules": [
+    {
+      "from": "allotted-resource",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.PartOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.PartOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "network-policy",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.PartOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tunnel-xconnect",
+      "to": "allotted-resource",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "zone",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "flavor",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "group-assignment",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "image",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "snapshot",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "complex",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "connector",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "element-choice-set",
+      "to": "constrained-element-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "customer",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "element-choice-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "entitlement",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vnf-image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "license",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "network-profile",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "site-pair-set",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "group-assignment",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "group-assignment",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "instance-group",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.Targets",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vig-server",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "ctag-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "network-policy",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "route-table-reference",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "segmentation-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "subnet",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "lag-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "p-interface",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "lag-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "sriov-vf",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "l-interface",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "lag-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pserver",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-ver",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-constraint",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-constraint",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-ver",
+      "label": "org.onap.relationships.inventory.IsA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-ver",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.IsA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "property-constraint",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "related-lookup",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "newvce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "p-interface",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "physical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "zone",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cvlan-tag",
+      "to": "port-group",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "zone",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "site-pair",
+      "to": "routing-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "allotted-resource",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "ctag-assignment",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "cvlan-tag",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "pnf",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-subscription",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "class-of-service",
+      "to": "site-pair",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "routing-instance",
+      "to": "site-pair-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "entitlement",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "license",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "port-group",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vnfc",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "multicast-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "ctag-pool",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "route-target",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "vserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vserver",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "flavor",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "snapshot",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "volume",
+      "label": "tosca.relationships.AttachesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "${direction}",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "model-ver",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "zone",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/aai-core/src/test/resources/dbedgerules/DbEdgerules_one.json b/aai-core/src/test/resources/dbedgerules/DbEdgerules_one.json
new file mode 100644 (file)
index 0000000..a0fc60a
--- /dev/null
@@ -0,0 +1,1313 @@
+{
+  "rules": [
+    {
+      "from": "availability-zone",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "flavor",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "image",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "complex",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "connector",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "element-choice-set",
+      "to": "constrained-element-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "customer",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "element-choice-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vnf-image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "network-profile",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "site-pair-set",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vig-server",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "ctag-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "network-policy",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "subnet",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "lag-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "p-interface",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "lag-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "sriov-vf",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "l-interface",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "lag-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pserver",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-constraint",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-constraint",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.IsA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "property-constraint",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "related-lookup",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "newvce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "p-interface",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "physical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "cvlan-tag",
+      "to": "port-group",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "site-pair",
+      "to": "routing-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "cvlan-tag",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-subscription",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "class-of-service",
+      "to": "site-pair",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "routing-instance",
+      "to": "site-pair-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "port-group",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "multicast-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "ctag-pool",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "vserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vserver",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "flavor",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model",
+      "label": "isA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model",
+      "to": "model-element",
+      "label": "startsWith",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "${direction}",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "volume",
+      "label": "tosca.relationships.AttachesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "${direction}",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/aai-core/src/test/resources/dbedgerules/DbEdgerules_three.json b/aai-core/src/test/resources/dbedgerules/DbEdgerules_three.json
new file mode 100644 (file)
index 0000000..508d8a2
--- /dev/null
@@ -0,0 +1,1731 @@
+{
+  "rules": [
+    {
+      "from": "allotted-resource",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.PartOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.PartOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.PartOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tunnel-xconnect",
+      "to": "allotted-resource",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "zone",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "flavor",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "group-assignment",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "image",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "snapshot",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "complex",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "connector",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "element-choice-set",
+      "to": "constrained-element-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "customer",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "element-choice-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "entitlement",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vnf-image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "license",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "network-profile",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "site-pair-set",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "group-assignment",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "group-assignment",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "instance-group",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.Targets",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vig-server",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "ctag-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "network-policy",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "route-table-reference",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "segmentation-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "subnet",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "lag-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "p-interface",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "lag-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "sriov-vf",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "l-interface",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "lag-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pserver",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-ver",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-constraint",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-constraint",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-ver",
+      "label": "org.onap.relationships.inventory.IsA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-ver",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.IsA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "property-constraint",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "related-lookup",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "newvce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "p-interface",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "physical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "zone",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cvlan-tag",
+      "to": "port-group",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "zone",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "site-pair",
+      "to": "routing-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "allotted-resource",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "allotted-resource",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "ctag-assignment",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "cvlan-tag",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "instance-group",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "pnf",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-subscription",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "class-of-service",
+      "to": "site-pair",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "routing-instance",
+      "to": "site-pair-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "entitlement",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "license",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "port-group",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vnfc",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "multicast-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "ctag-pool",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "vserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vserver",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "flavor",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "snapshot",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "volume",
+      "label": "tosca.relationships.AttachesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "${direction}",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "model-ver",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "zone",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/aai-core/src/test/resources/dbedgerules/DbEdgerules_two.json b/aai-core/src/test/resources/dbedgerules/DbEdgerules_two.json
new file mode 100644 (file)
index 0000000..afc7e91
--- /dev/null
@@ -0,0 +1,1467 @@
+{
+  "rules": [
+    {
+      "from": "availability-zone",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "availability-zone",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "cloud-region",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "flavor",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "group-assignment",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "image",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "snapshot",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "complex",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "connector",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "element-choice-set",
+      "to": "constrained-element-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "ctag-pool",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "customer",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "dvs-switch",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "element-choice-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vnf-image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "network-profile",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "site-pair-set",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "group-assignment",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "${direction}",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "group-assignment",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vig-server",
+      "to": "ipsec-configuration",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "subnet",
+      "label": "org.onap.relationships.inventory.network.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "ctag-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "network-policy",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "route-table-reference",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-network",
+      "to": "vpn-binding",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "segmentation-assignment",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "subnet",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "lag-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "p-interface",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "lag-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "sriov-vf",
+      "to": "l-interface",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "l-interface",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "generic-vnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "lag-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pnf",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "pserver",
+      "label": "org.onap.relationships.inventory.BridgedTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-constraint",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "constrained-element-set",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-constraint",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.IsA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "named-query-element",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "property-constraint",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "related-lookup",
+      "to": "named-query-element",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "newvce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "oam-network",
+      "to": "service-capability",
+      "label": "org.onap.relationships.inventory.AppliesTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "p-interface",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "logical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "physical-link",
+      "label": "tosca.relationships.network.LinksTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pnf",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pnf",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "cvlan-tag",
+      "to": "port-group",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "pserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.MemberOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "cloud-region",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "pserver",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "site-pair",
+      "to": "routing-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "connector",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "cvlan-tag",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-instance",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "service-subscription",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "class-of-service",
+      "to": "site-pair",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "routing-instance",
+      "to": "site-pair-set",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-subscription",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "tenant",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "port-group",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "service-instance",
+      "to": "vce",
+      "label": "org.onap.relationships.inventory.ComposedOf",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "availability-zone",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vce",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "l3-network",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vnfc",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "generic-vnf",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "logical-link",
+      "to": "virtual-data-center",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv4-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l3-interface-ipv6-address-list",
+      "to": "vlan",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "logical-link",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vlan",
+      "to": "multicast-configuration",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "tenant",
+      "to": "volume-group",
+      "label": "org.onap.relationships.inventory.DependsOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "volume-group",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "lag-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "p-interface",
+      "to": "vpls-pe",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "complex",
+      "label": "org.onap.relationships.inventory.LocatedIn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vpls-pe",
+      "to": "ctag-pool",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "l-interface",
+      "to": "vserver",
+      "label": "tosca.relationships.network.BindsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vf-module",
+      "to": "vserver",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vnfc",
+      "to": "vserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "flavor",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "image",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "model-element",
+      "to": "model",
+      "label": "isA",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "model",
+      "to": "model-element",
+      "label": "startsWith",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "${direction}",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "metadatum",
+      "to": "model",
+      "label": "org.onap.relationships.inventory.BelongsTo",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "!${direction}",
+      "delete-other-v": "!${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "pserver",
+      "label": "tosca.relationships.HostedOn",
+      "direction": "OUT",
+      "multiplicity": "MANY2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "!${direction}",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "snapshot",
+      "label": "org.onap.relationships.inventory.Uses",
+      "direction": "OUT",
+      "multiplicity": "ONE2ONE",
+      "contains-other-v": "NONE",
+      "delete-other-v": "NONE",
+      "prevent-delete": "NONE",
+      "default": "true"
+    },
+    {
+      "from": "vserver",
+      "to": "volume",
+      "label": "tosca.relationships.AttachesTo",
+      "direction": "OUT",
+      "multiplicity": "ONE2MANY",
+      "contains-other-v": "${direction}",
+      "delete-other-v": "${direction}",
+      "prevent-delete": "NONE",
+      "default": "true"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/aai-core/src/test/resources/oxm/dbalias_oxm_four.xml b/aai-core/src/test/resources/oxm/dbalias_oxm_four.xml
new file mode 100644 (file)
index 0000000..b2a215a
--- /dev/null
@@ -0,0 +1,5514 @@
+<!--
+  ============LICENSE_START=======================================================
+  org.onap.aai
+  ================================================================================
+  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=========================================================
+  -->
+<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.onap.org.v4" xml-mapping-metadata-complete="true">
+<xml-schema element-form-default="QUALIFIED">
+    <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v4"/>
+</xml-schema>
+<java-types>
+    <java-type name="Inventory">
+        <xml-root-element name="inventory"/>
+        <java-attributes>
+            <xml-element java-attribute="search" name="search" type="inventory.aai.onap.org.v4.Search"/>
+            <xml-element java-attribute="actions" name="actions" type="inventory.aai.onap.org.v4.Actions"/>
+            <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.onap.org.v4.CloudInfrastructure"/>
+            <xml-element java-attribute="business" name="business" type="inventory.aai.onap.org.v4.Business"/>
+            <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.onap.org.v4.ServiceDesignAndCreation"/>
+            <xml-element java-attribute="network" name="network" type="inventory.aai.onap.org.v4.Network"/>
+            <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.onap.org.v4.AaiInternal"/>
+            <xml-element java-attribute="nodes" name="nodes" type="inventory.aai.onap.org.v4.Nodes"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Nodes">
+        <xml-root-element name="nodes"/>
+    </java-type>
+    <java-type name="Search">
+        <xml-root-element name="search"/>
+        <java-attributes>
+            <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.onap.org.v4.EdgeTagQueryResult"/>
+            <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.onap.org.v4.EdgeTagQueryRequest"/>
+            <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.onap.org.v4.SearchResults"/>
+            <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.onap.org.v4.SdnZoneResponse"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="EdgeTagQueryResult">
+        <xml-root-element name="edge-tag-query-result"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v4.TaggedInventoryItemList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="TaggedInventoryItemList">
+        <xml-root-element name="tagged-inventory-item-list"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.onap.org.v4.InventoryItem"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InventoryItem">
+        <xml-root-element name="inventory-item"/>
+        <java-attributes>
+            <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String"/>
+            <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.onap.org.v4.InventoryItemData"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v4.TaggedInventoryItemList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InventoryItemData">
+        <xml-root-element name="inventory-item-data"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="EdgeTagQueryRequest">
+        <xml-root-element name="edge-tag-query-request"/>
+        <java-attributes>
+            <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String"/>
+            <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String"/>
+            <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.onap.org.v4.StartNodeFilter"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.onap.org.v4.IncludeNodeFilter"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.onap.org.v4.SecondaryFilter"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="StartNodeFilter">
+        <xml-root-element name="start-node-filter"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="IncludeNodeFilter">
+        <xml-root-element name="include-node-filter"/>
+        <java-attributes>
+            <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SecondaryFilter">
+        <xml-root-element name="secondary-filter"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+            <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SearchResults">
+        <xml-root-element name="search-results"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.onap.org.v4.ResultData"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ResultData">
+        <xml-root-element name="result-data"/>
+        <java-attributes>
+            <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The specific type of node in the A&amp;AI graph"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The URL to the specific resource"/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SdnZoneResponse">
+        <xml-root-element name="sdn-zone-response"/>
+        <java-attributes>
+            <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v4.OamNetworks"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.onap.org.v4.AzAndDvsSwitches"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="AzAndDvsSwitches">
+        <xml-root-element name="az-and-dvs-switches"/>
+        <java-attributes>
+            <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v4.DvsSwitches"/>
+            <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v4.AvailabilityZone"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Actions">
+        <xml-properties>
+            <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)."/>
+        </xml-properties>
+        <xml-root-element name="actions"/>
+        <java-attributes>
+            <xml-element java-attribute="update" name="update" type="inventory.aai.onap.org.v4.Update"/>
+            <xml-element java-attribute="notify" name="notify" type="inventory.aai.onap.org.v4.Notify"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Update">
+        <xml-properties>
+            <xml-property name="description" value="Serves a PATCH like function.  Does not enforce concurrency control.  Clear each usage with AAI team."/>
+        </xml-properties>
+        <xml-root-element name="update"/>
+        <java-attributes>
+            <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.onap.org.v4.UpdateNodeKey"/>
+            <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.onap.org.v4.Action"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Action">
+        <xml-root-element name="action"/>
+        <java-attributes>
+            <xml-element java-attribute="actionType" name="action-type" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.onap.org.v4.ActionData"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ActionData">
+        <xml-root-element name="action-data"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="UpdateNodeKey">
+        <xml-root-element name="update-node-key"/>
+        <java-attributes>
+            <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+            <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Notify">
+        <xml-root-element name="notify"/>
+        <java-attributes>
+            <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String"/>
+            <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.onap.org.v4.KeyData"/>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="KeyData">
+        <xml-root-element name="key-data"/>
+        <java-attributes>
+            <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+            <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="CloudInfrastructure">
+        <xml-properties>
+            <xml-property name="description" value="Namespace for cloud infrastructure."/>
+        </xml-properties>
+        <xml-root-element name="cloud-infrastructure"/>
+        <java-attributes>
+            <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.onap.org.v4.Complexes"/>
+            <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.onap.org.v4.CloudRegions"/>
+            <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.onap.org.v4.NetworkProfiles"/>
+            <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.onap.org.v4.Pservers"/>
+            <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.onap.org.v4.VirtualDataCenters"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="CloudRegions">
+        <xml-root-element name="cloud-regions"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.onap.org.v4.CloudRegion"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="CloudRegion">
+        <xml-root-element name="cloud-region"/>
+        <java-attributes>
+            <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Identifies the vendor and cloud name, e.g., att-aic. First part of composite key should be formatted as vendor-cloudname"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of the cloud (e.g., openstack)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Cloud-owner defined type indicator (e.g., dcp, lcp)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Software version employed at the site.  NOTE - THIS FIELD IS NOT KEPT UP TO DATE."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL of the keystone identity service"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Zone where the cloud is homed.  NOTE - THIS FIELD IS NOT CORRECTLY POPULATED."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="complex name for cloud-region instance.  NOTE - THIS FIELD IS NOT CORRECTLY POPULATED."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.onap.org.v4.VolumeGroups"/>
+            <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v4.Tenants"/>
+            <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v4.Flavors"/>
+            <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v4.GroupAssignments"/>
+            <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.onap.org.v4.Snapshots"/>
+            <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v4.Images"/>
+            <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v4.DvsSwitches"/>
+            <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v4.OamNetworks"/>
+            <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v4.AvailabilityZones"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&amp;Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&amp;T's AIC."/>
+            <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type"/>
+            <xml-property name="nameProps" value="owner-defined-type"/>
+            <xml-property name="container" value="cloud-regions"/>
+            <xml-property name="namespace" value="cloud-infrastructure"/>
+            <xml-property name="uriTemplate" value="/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}"/>
+        </xml-properties>
+    </java-type>
+    <java-type name="VolumeGroups">
+        <xml-properties>
+            <xml-property name="description" value="Collection of persistent block-level storage."/>
+        </xml-properties>
+        <xml-root-element name="volume-groups"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.onap.org.v4.VolumeGroup"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VolumeGroup">
+        <xml-root-element name="volume-group"/>
+        <java-attributes>
+            <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of volume-group."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="volumeGroupName" name="volume-group-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the volume group."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this volume-group"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this volume-group"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfModuleModelCustomizationId" name="vf-module-model-customization-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="helps relate the volume group to the vf-module whose components will require the volume group"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Persistent block-level storage."/>
+            <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id"/>
+            <xml-property name="searchable" value="volume-group-id,volume-group-name"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="volume-groups"/>
+            <xml-property name="uriTemplate" value="/volume-groups/volume-group/{volume-group-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="RelationshipList">
+        <xml-root-element name="relationship-list"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.onap.org.v4.Relationship"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Relationship">
+        <xml-root-element name="relationship"/>
+        <java-attributes>
+            <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="A keyword provided by A&amp;AI to indicate type of node."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to the object in A&amp;AI."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.onap.org.v4.RelationshipData"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.onap.org.v4.RelatedToProperty"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RelatedToProperty">
+        <xml-root-element name="related-to-property"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Key part of a key/value pair"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Value part of a key/value pair"/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RelationshipData">
+        <xml-root-element name="relationship-data"/>
+        <java-attributes>
+            <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="A keyword provided by A&amp;AI to indicate an attribute."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Value of the attribute."/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Complexes">
+        <xml-properties>
+            <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+        </xml-properties>
+        <xml-root-element name="complexes"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.onap.org.v4.Complex"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Complex">
+        <xml-root-element name="complex"/>
+        <java-attributes>
+            <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Data center code which can be an alternate way to identify a complex"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Gamma complex name for LCP instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL of the keystone identity service"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type, e.g., central office, data center."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="street2" name="street2" type="java.lang.String"/>
+            <xml-element java-attribute="city" name="city" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="state" name="state" type="java.lang.String"/>
+            <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="country" name="country" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="region" name="region" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="latitude" name="latitude" type="java.lang.String"/>
+            <xml-element java-attribute="longitude" name="longitude" type="java.lang.String"/>
+            <xml-element java-attribute="elevation" name="elevation" type="java.lang.String"/>
+            <xml-element java-attribute="lata" name="lata" type="java.lang.String"/>
+            <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.onap.org.v4.CtagPools"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+            <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id"/>
+            <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code"/>
+            <xml-property name="uniqueProps" value="physical-location-id"/>
+            <xml-property name="container" value="complexes"/>
+            <xml-property name="namespace" value="cloud-infrastructure"/>
+            <xml-property name="uriTemplate" value="/cloud-infrastructure/complexes/complex/{physical-location-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="CtagPools">
+        <xml-root-element name="ctag-pools"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.onap.org.v4.CtagPool"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="CtagPool">
+        <xml-root-element name="ctag-pool"/>
+        <java-attributes>
+            <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="The Target provider edge router"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the availability zone"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Describes what the intended purpose of this pool is."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Comma separated list of ctags"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose."/>
+            <xml-property name="indexedProps" value="availability-zone-name"/>
+            <xml-property name="dependentOn" value="complex"/>
+            <xml-property name="container" value="ctag-pools"/>
+            <xml-property name="uriTemplate" value="/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Tenants">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack tenants."/>
+        </xml-properties>
+        <xml-root-element name="tenants"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.onap.org.v4.Tenant"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Tenant">
+        <xml-root-element name="tenant"/>
+        <java-attributes>
+            <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id relative to the cloud-region."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Readable name of tenant"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.onap.org.v4.Vservers"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Openstack tenant"/>
+            <xml-property name="nameProps" value="tenant-name"/>
+            <xml-property name="indexedProps" value="tenant-name,tenant-id"/>
+            <xml-property name="searchable" value="tenant-id,tenant-name"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="tenants"/>
+            <xml-property name="uriTemplate" value="/tenants/tenant/{tenant-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Vservers">
+        <xml-properties>
+            <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs."/>
+        </xml-properties>
+        <xml-root-element name="vservers"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.onap.org.v4.Vserver"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Vserver">
+        <xml-root-element name="vserver"/>
+        <java-attributes>
+            <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier for this vserver relative to its tenant"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of vserver"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Alternative name of vserver"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.onap.org.v4.Volumes"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v4.LInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Virtual Servers, aka virtual machine or VM."/>
+            <xml-property name="nameProps" value="vserver-name"/>
+            <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2"/>
+            <xml-property name="searchable" value="vserver-id,vserver-name,vserver-name2"/>
+            <xml-property name="dependentOn" value="tenant"/>
+            <xml-property name="container" value="vservers"/>
+            <xml-property name="uriTemplate" value="/vservers/vserver/{vserver-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="LInterfaces">
+        <xml-properties>
+            <xml-property name="description" value="Collection of logical interfaces."/>
+        </xml-properties>
+        <xml-root-element name="l-interfaces"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.onap.org.v4.LInterface"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="LInterface">
+        <xml-root-element name="l-interface"/>
+        <java-attributes>
+            <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Name given to the interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ID of interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="MAC address for the interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the network"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Whether A&amp;AI should be managing this interface of not. Could have value like CUSTOMER"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Human friendly text regarding this interface."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="isPortMirrored" name="is-port-mirrored" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="boolean indicatating whether or not port is a mirrored."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.onap.org.v4.Vlans"/>
+            <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.onap.org.v4.SriovVfs"/>
+            <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v4.LInterfaces"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v4.L3InterfaceIpv4AddressList"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v4.L3InterfaceIpv6AddressList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Logical interfaces, e.g., a vnic."/>
+            <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name"/>
+            <xml-property name="dependentOn" value="generic-vnf,newvce,p-interface,vserver,lag-interface,l-interface"/>
+            <xml-property name="container" value="l-interfaces"/>
+            <xml-property name="uriTemplate" value="/l-interfaces/l-interface/{interface-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="SriovVfs">
+        <xml-properties>
+            <xml-property name="description" value="Collection of SR-IOV Virtual Functions."/>
+        </xml-properties>
+        <xml-root-element name="sriov-vfs"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.onap.org.v4.SriovVf"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="SriovVf">
+        <xml-root-element name="sriov-vf"/>
+        <java-attributes>
+            <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="PCI ID used to identify the sriov-vf"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This option is used to set the link status.  Valid values as of 1607 are on, off, and auto."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron network id of the interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)"/>
+            <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id"/>
+            <xml-property name="dependentOn" value="l-interface"/>
+            <xml-property name="container" value="sriov-vfs"/>
+            <xml-property name="uriTemplate" value="/sriov-vfs/sriov-vf/{pci-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="L3InterfaceIpv4AddressList">
+        <xml-root-element name="l3-interface-ipv4-address-list"/>
+        <java-attributes>
+            <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="IP address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Prefix length, 32 for single address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Inner VLAN tag"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Outer VLAN tag"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator of fixed or floating address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="IPv4 Address Range"/>
+            <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+            <xml-property name="dependentOn" value="vlan,l-interface"/>
+            <xml-property name="uriTemplate" value="/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Vlans">
+        <xml-root-element name="vlans"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.onap.org.v4.Vlan"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Vlan">
+        <xml-root-element name="vlan"/>
+        <java-attributes>
+            <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="String that identifies the interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Inner VLAN tag"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Outer VLAN tag"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the numeric part of the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used to describe (the service associated with) the vlan"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vpnKey" name="vpn-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v4.L3InterfaceIpv4AddressList"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v4.L3InterfaceIpv6AddressList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Definition of vlan"/>
+            <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-key"/>
+            <xml-property name="dependentOn" value="l-interface"/>
+            <xml-property name="container" value="vlans"/>
+            <xml-property name="uriTemplate" value="/vlans/vlan/{vlan-interface}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="L3InterfaceIpv6AddressList">
+        <xml-root-element name="l3-interface-ipv6-address-list"/>
+        <java-attributes>
+            <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="IP address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Prefix length, 128 for single address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Inner VLAN tag"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Outer VLAN tag"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator of fixed or floating address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="IPv6 Address Range"/>
+            <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+            <xml-property name="dependentOn" value="vlan,l-interface"/>
+            <xml-property name="uriTemplate" value="/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Volumes">
+        <xml-properties>
+            <xml-property name="description" value="Collection of ephemeral Block storage volumes."/>
+        </xml-properties>
+        <xml-root-element name="volumes"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.onap.org.v4.Volume"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Volume">
+        <xml-root-element name="volume"/>
+        <java-attributes>
+            <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of block storage volume relative to the vserver."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Ephemeral Block storage volume."/>
+            <xml-property name="indexedProps" value="volume-id"/>
+            <xml-property name="dependentOn" value="vserver"/>
+            <xml-property name="container" value="volumes"/>
+            <xml-property name="uriTemplate" value="/volumes/volume/{volume-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Flavors">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack flavors."/>
+        </xml-properties>
+        <xml-root-element name="flavors"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.onap.org.v4.Flavor"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Flavor">
+        <xml-root-element name="flavor"/>
+        <java-attributes>
+            <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Flavor id, expected to be unique across cloud-region."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Flavor name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Number of CPUs"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Amount of memory"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Disk space"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Amount of ephemeral disk space"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="amount of swap space allocation"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Openstack flavor."/>
+            <xml-property name="nameProps" value="flavor-name"/>
+            <xml-property name="indexedProps" value="flavor-name,flavor-id"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="flavors"/>
+            <xml-property name="uriTemplate" value="/flavors/flavor/{flavor-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Snapshots">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack snapshots"/>
+        </xml-properties>
+        <xml-root-element name="snapshots"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.onap.org.v4.Snapshot"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Snapshot">
+        <xml-root-element name="snapshot"/>
+        <java-attributes>
+            <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Snapshot name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Operating system architecture"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="application" name="application" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The application that the image instantiates."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The vendor of the application."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The version of the application."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Openstack snapshot"/>
+            <xml-property name="nameProps" value="snapshot-name"/>
+            <xml-property name="uniqueProps" value="snapshot-id"/>
+            <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="snapshots"/>
+            <xml-property name="uriTemplate" value="/snapshots/snapshot/{snapshot-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="GroupAssignments">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack group assignments"/>
+        </xml-properties>
+        <xml-root-element name="group-assignments"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.onap.org.v4.GroupAssignment"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="GroupAssignment">
+        <xml-root-element name="group-assignment"/>
+        <java-attributes>
+            <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Group id, expected to be unique across cloud-region."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Group type - the type of group this instance refers to"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Group name - name assigned to the group"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Group description - description of the group"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)."/>
+            <xml-property name="nameProps" value="group-name"/>
+            <xml-property name="indexedProps" value="group-id,group-type,group-name"/>
+            <xml-property name="searchable" value="group-id,group-name"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="group-assignments"/>
+            <xml-property name="uriTemplate" value="/group-assignments/group-assignment/{group-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Images">
+        <xml-properties>
+            <xml-property name="description" value="Collectio of Openstack images."/>
+        </xml-properties>
+        <xml-root-element name="images"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.onap.org.v4.Image"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Image">
+        <xml-root-element name="image"/>
+        <java-attributes>
+            <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Image id, expected to be unique across cloud region"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Image name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Operating system architecture."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="application" name="application" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The application that the image instantiates."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The vendor of the application."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The version of the application."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v4.Metadata"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Openstack image."/>
+            <xml-property name="nameProps" value="image-name"/>
+            <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="images"/>
+            <xml-property name="uriTemplate" value="/images/image/{image-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Metadata">
+        <xml-properties>
+            <xml-property name="description" value="Collection of metadatum (key/value pairs)"/>
+        </xml-properties>
+        <xml-root-element name="metadata"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.onap.org.v4.Metadatum"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Metadatum">
+        <xml-root-element name="metadatum"/>
+        <java-attributes>
+            <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true"/>
+            <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Key/value pairs"/>
+            <xml-property name="indexedProps" value="metaname"/>
+            <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model"/>
+            <xml-property name="container" value="metadata"/>
+            <xml-property name="uriTemplate" value="/metadata/metadatum/{metaname}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="DvsSwitches">
+        <xml-properties>
+            <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and GenericVnfs."/>
+        </xml-properties>
+        <xml-root-element name="dvs-switches"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.onap.org.v4.DvsSwitch"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="DvsSwitch">
+        <xml-root-element name="dvs-switch"/>
+        <java-attributes>
+            <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="DVS switch name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL used to reach the vcenter"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs.  A&amp;AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&amp;AI. "/>
+            <xml-property name="indexedProps" value="vcenter-url,switch-name"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="dvs-switches"/>
+            <xml-property name="uriTemplate" value="/dvs-switches/dvs-switch/{switch-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="NetworkProfiles">
+        <xml-properties>
+            <xml-property name="description" value="Collection of network profiles"/>
+        </xml-properties>
+        <xml-root-element name="network-profiles"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.onap.org.v4.NetworkProfile"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="NetworkProfile">
+        <xml-root-element name="network-profile"/>
+        <java-attributes>
+            <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique name of network profile."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="communityString" name="community-string" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Encrypted SNMP community string"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Network profile populated by SDN-GP for SNMP"/>
+            <xml-property name="indexedProps" value="nm-profile-name"/>
+            <xml-property name="container" value="network-profiles"/>
+            <xml-property name="namespace" value="cloud-infrastructure"/>
+            <xml-property name="uriTemplate" value="/cloud-infrastructure/network-profiles/network-profile/{nm-profile-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Pservers">
+        <xml-properties>
+            <xml-property name="description" value="Collection of compute hosts."/>
+        </xml-properties>
+        <xml-root-element name="pservers"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.onap.org.v4.Pserver"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Pserver">
+        <xml-root-element name="pserver"/>
+        <java-attributes>
+            <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Value from executing hostname on the compute node."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="PTNII name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Number of cpus"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Disk size, in GBs"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="RAM size, in MBs"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Fully-qualified domain name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Serial number, may be queried"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV4 Loopback 0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV6 Loopback 0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV4 AIM address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV6 AIM address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV6 OAM address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="CANOPI's inventory status.  Only set with values exactly as defined by CANOPI."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ID of Pserver"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="internet topology of Pserver"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="alternative pserver name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="purpose" name="purpose" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="purpose of pserver"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v4.PInterfaces"/>
+            <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v4.LagInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver."/>
+            <xml-property name="nameProps" value="pserver-name2"/>
+            <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2,inv-status"/>
+            <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address"/>
+            <xml-property name="uniqueProps" value="hostname"/>
+            <xml-property name="container" value="pservers"/>
+            <xml-property name="namespace" value="cloud-infrastructure"/>
+            <xml-property name="uriTemplate" value="/cloud-infrastructure/pservers/pserver/{hostname}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="PInterfaces">
+        <xml-properties>
+            <xml-property name="description" value="Collection of physical interfaces."/>
+        </xml-properties>
+        <xml-root-element name="p-interfaces"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.onap.org.v4.PInterface"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="PInterface">
+        <xml-root-element name="p-interface"/>
+        <java-attributes>
+            <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Name that identifies the physical interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the numeric part of the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Nature of the services and connectivity on this port."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="CLEI or other specification for p-interface hardware."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Role specification for p-interface hardware."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicates the physical properties of the interface."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v4.LInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Physical interface (e.g., nic)"/>
+            <xml-property name="indexedProps" value="interface-name,prov-status"/>
+            <xml-property name="nameProps" value="prov-status"/>
+            <xml-property name="dependentOn" value="vpls-pe,pserver,pnf"/>
+            <xml-property name="container" value="p-interfaces"/>
+            <xml-property name="uriTemplate" value="/p-interfaces/p-interface/{interface-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="LagInterfaces">
+        <xml-properties>
+            <xml-property name="description" value="Collection of link aggregate interfaces."/>
+        </xml-properties>
+        <xml-root-element name="lag-interfaces"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.onap.org.v4.LagInterface"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="LagInterface">
+        <xml-root-element name="lag-interface"/>
+        <java-attributes>
+            <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Name that identifies the link aggregate interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Human friendly text regarding this interface."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the numeric part of the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ID of interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v4.LInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Link aggregate interface"/>
+            <xml-property name="indexedProps" value="interface-name,interface-id,interface-role"/>
+            <xml-property name="dependentOn" value="generic-vnf,pserver,vpls-pe,pnf"/>
+            <xml-property name="container" value="lag-interfaces"/>
+            <xml-property name="uriTemplate" value="/lag-interfaces/lag-interface/{interface-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="OamNetworks">
+        <xml-properties>
+            <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly.  Do not use for new purposes. "/>
+        </xml-properties>
+        <xml-root-element name="oam-networks"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.onap.org.v4.OamNetwork"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="OamNetwork">
+        <xml-root-element name="oam-network"/>
+        <java-attributes>
+            <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of the network. Unique across a cloud-region"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="cvlan-id"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="OAM network, to be deprecated shortly.  Do not use for new purposes. "/>
+            <xml-property name="nameProps" value="network-name"/>
+            <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="oam-networks"/>
+            <xml-property name="uriTemplate" value="/oam-networks/oam-network/{network-uuid}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="AvailabilityZones">
+        <xml-properties>
+            <xml-property name="description" value="Collection of availability zones"/>
+        </xml-properties>
+        <xml-root-element name="availability-zones"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v4.AvailabilityZone"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="AvailabilityZone">
+        <xml-root-element name="availability-zone"/>
+        <java-attributes>
+            <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the availability zone.  Unique across a cloud region"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of hypervisor.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="State that indicates whether the availability zone should be used, etc.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers"/>
+            <xml-property name="indexedProps" value="availability-zone-name"/>
+            <xml-property name="dependentOn" value="cloud-region"/>
+            <xml-property name="container" value="availability-zones"/>
+            <xml-property name="uriTemplate" value="/availability-zones/availability-zone/{availability-zone-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="VirtualDataCenters">
+        <xml-properties>
+            <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+        </xml-properties>
+        <xml-root-element name="virtual-data-centers"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.onap.org.v4.VirtualDataCenter"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VirtualDataCenter">
+        <xml-root-element name="virtual-data-center"/>
+        <java-attributes>
+            <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of the vdc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the virtual data center"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+            <xml-property name="nameProps" value="vdc-name"/>
+            <xml-property name="indexedProps" value="vdc-name,vdc-id"/>
+            <xml-property name="container" value="virtual-data-centers"/>
+            <xml-property name="namespace" value="cloud-infrastructure"/>
+            <xml-property name="uriTemplate" value="/cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Business">
+        <xml-properties>
+            <xml-property name="description" value="Namespace for business related constructs"/>
+        </xml-properties>
+        <xml-root-element name="business"/>
+        <java-attributes>
+            <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.onap.org.v4.Connectors"/>
+            <xml-element java-attribute="customers" name="customers" type="inventory.aai.onap.org.v4.Customers"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Connectors">
+        <xml-properties>
+            <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+        </xml-properties>
+        <xml-root-element name="connectors"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.onap.org.v4.Connector"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Connector">
+        <xml-root-element name="connector"/>
+        <java-attributes>
+            <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of resource instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v4.Metadata"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+            <xml-property name="indexedProps" value="resource-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version"/>
+            <xml-property name="container" value="connectors"/>
+            <xml-property name="namespace" value="business"/>
+            <xml-property name="uriTemplate" value="/business/connectors/connector/{resource-instance-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Customers">
+        <xml-properties>
+            <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information."/>
+        </xml-properties>
+        <xml-root-element name="customers"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.onap.org.v4.Customer"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Customer">
+        <xml-root-element name="customer"/>
+        <java-attributes>
+            <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers."/>
+                    <xml-property name="defaultValue" value="CUST"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.onap.org.v4.ServiceSubscriptions"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="customer identifiers to provide linkage back to BSS information."/>
+            <xml-property name="nameProps" value="subscriber-name"/>
+            <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type"/>
+            <xml-property name="searchable" value="global-customer-id,subscriber-name"/>
+            <xml-property name="uniqueProps" value="global-customer-id"/>
+            <xml-property name="container" value="customers"/>
+            <xml-property name="namespace" value="business"/>
+            <xml-property name="uriTemplate" value="/business/customers/customer/{global-customer-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="ServiceSubscriptions">
+        <xml-properties>
+            <xml-property name="description" value="Collection of objects that group service instances."/>
+        </xml-properties>
+        <xml-root-element name="service-subscriptions"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.onap.org.v4.ServiceSubscription"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ServiceSubscription">
+        <xml-root-element name="service-subscription"/>
+        <java-attributes>
+            <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This property will be deleted from A&amp;AI in the near future. Only stop gap solution."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.onap.org.v4.ServiceInstances">
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Object that group service instances."/>
+            <xml-property name="indexedProps" value="service-type"/>
+            <xml-property name="dependentOn" value="customer"/>
+            <xml-property name="container" value="service-subscriptions"/>
+            <xml-property name="crossEntityReference" value="service-instance,service-type"/>
+            <xml-property name="uriTemplate" value="/service-subscriptions/service-subscription/{service-type}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="ServiceInstances">
+        <xml-properties>
+            <xml-property name="description" value="Collection of service instances"/>
+        </xml-properties>
+        <xml-root-element name="service-instances"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.onap.org.v4.ServiceInstance"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ServiceInstance">
+        <xml-root-element name="service-instance"/>
+        <java-attributes>
+            <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Uniquely identifies this instance of a service"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="This field will store a name assigned to the service-instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicates the total bandwidth to be used for this service."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL customers will use to access the vHN Portal."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="An identifier that customers assign to the location where this service is being used."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Path to the controller object."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this service."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v4.Metadata"/>
+            <xml-element java-attribute="allottedResources" name="allotted-resources" type="inventory.aai.onap.org.v4.AllottedResources"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Instance of a service"/>
+            <xml-property name="indexedProps" value="service-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status"/>
+            <xml-property name="nameProps" value="service-instance-name"/>
+            <xml-property name="searchable" value="service-instance-id,service-instance-name"/>
+            <xml-property name="uniqueProps" value="service-instance-id"/>
+            <xml-property name="dependentOn" value="service-subscription"/>
+            <xml-property name="container" value="service-instances"/>
+            <xml-property name="uriTemplate" value="/service-instances/service-instance/{service-instance-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="ServiceDesignAndCreation">
+        <xml-properties>
+            <xml-property name="description" value="Namespace for objects managed by ASDC"/>
+        </xml-properties>
+        <xml-root-element name="service-design-and-creation"/>
+        <java-attributes>
+            <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.onap.org.v4.VnfImages"/>
+            <xml-element java-attribute="services" name="services" type="inventory.aai.onap.org.v4.Services"/>
+            <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.onap.org.v4.ServiceCapabilities"/>
+            <xml-element java-attribute="models" name="models" type="inventory.aai.onap.org.v4.Models"/>
+            <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.onap.org.v4.NamedQueries"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VnfImages">
+        <xml-properties>
+            <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+        </xml-properties>
+        <xml-root-element name="vnf-images"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.onap.org.v4.VnfImage"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VnfImage">
+        <xml-root-element name="vnf-image"/>
+        <java-attributes>
+            <xml-element java-attribute="attUuid" name="att-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of this asset"/>
+                    <xml-property name="dbAlias" value="vnf-image-uuid"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="application" name="application" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The application that the image instantiates."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The vendor of the application."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The version of the application."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+            <xml-property name="indexedProps" value="application,att-uuid,application-vendor,application-version"/>
+            <xml-property name="uniqueProps" value="att-uuid"/>
+            <xml-property name="container" value="vnf-images"/>
+            <xml-property name="namespace" value="service-design-and-creation"/>
+            <xml-property name="uriTemplate" value="/service-design-and-creation/vnf-images/vnf-image/{att-uuid}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Services">
+        <xml-properties>
+            <xml-property name="description" value="Collection of service model definitions.  Likely to be deprecated in favor of models from ASDC."/>
+        </xml-properties>
+        <xml-root-element name="services"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.onap.org.v4.Service"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Service">
+        <xml-root-element name="service"/>
+        <java-attributes>
+            <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Description of the service"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="service version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Stand-in for service model definitions.  Likely to be deprecated in favor of models from ASDC.  Does not strictly map to ASDC services."/>
+            <xml-property name="indexedProps" value="service-description,service-id"/>
+            <xml-property name="container" value="services"/>
+            <xml-property name="namespace" value="service-design-and-creation"/>
+            <xml-property name="uriTemplate" value="/service-design-and-creation/services/service/{service-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="ServiceCapabilities">
+        <xml-properties>
+            <xml-property name="description" value="Collection of service capabilities."/>
+        </xml-properties>
+        <xml-root-element name="service-capabilities"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.onap.org.v4.ServiceCapability"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ServiceCapability">
+        <xml-root-element name="service-capability"/>
+        <java-attributes>
+            <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models.  No new use should be made of this."/>
+            <xml-property name="indexedProps" value="service-type,vnf-type"/>
+            <xml-property name="container" value="service-capabilities"/>
+            <xml-property name="namespace" value="service-design-and-creation"/>
+            <xml-property name="uriTemplate" value="/service-design-and-creation/service-capabilities/service-capability/{service-type}/{vnf-type}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Network">
+        <xml-properties>
+            <xml-property name="description" value="Namespace for network inventory resources."/>
+        </xml-properties>
+        <xml-root-element name="network"/>
+        <java-attributes>
+            <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.onap.org.v4.LogicalLinks"/>
+            <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.onap.org.v4.SitePairSets"/>
+            <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.onap.org.v4.VpnBindings"/>
+            <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.onap.org.v4.VplsPes"/>
+            <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.onap.org.v4.MulticastConfigurations"/>
+            <xml-element java-attribute="vces" name="vces" type="inventory.aai.onap.org.v4.Vces"/>
+            <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.onap.org.v4.Vnfcs"/>
+            <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.onap.org.v4.L3Networks"/>
+            <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.onap.org.v4.NetworkPolicies"/>
+            <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.onap.org.v4.GenericVnfs"/>
+            <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.onap.org.v4.LagLinks"/>
+            <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.onap.org.v4.Newvces"/>
+            <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.onap.org.v4.Pnfs"/>
+            <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.onap.org.v4.PhysicalLinks"/>
+            <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.onap.org.v4.IpsecConfigurations"/>
+            <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.onap.org.v4.RouteTableReferences"/>
+            <xml-element java-attribute="instanceGroups" name="instance-groups" type="inventory.aai.onap.org.v4.InstanceGroups"/>
+            <xml-element java-attribute="zones" name="zones" type="inventory.aai.onap.org.v4.Zones"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="LogicalLinks">
+        <xml-properties>
+            <xml-property name="description" value="Collection of logical connections"/>
+        </xml-properties>
+        <xml-root-element name="logical-links"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.onap.org.v4.LogicalLink"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="LogicalLink">
+        <xml-root-element name="logical-link"/>
+        <java-attributes>
+            <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of logical link, e.g., evc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the numeric part of the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v4, v6, or ds for dual stack (should be att-ip-version)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="For example, static or BGP"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indication of operational status of the logical link."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indication of the network use of the logical link."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="linkId" name="link-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of the logical-link, SDNC generates this."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Circuit id"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="purpose" name="purpose" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Reason for this entity, role it is playing"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points"/>
+            <xml-property name="indexedProps" value="link-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose"/>
+            <xml-property name="uniqueProps" value="link-id"/>
+            <xml-property name="container" value="logical-links"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="searchable" value="link-name"/>
+            <xml-property name="uriTemplate" value="/network/logical-links/logical-link/{link-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="SitePairSets">
+        <xml-properties>
+            <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf"/>
+        </xml-properties>
+        <xml-root-element name="site-pair-sets"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.onap.org.v4.SitePairSet"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SitePairSet">
+        <xml-root-element name="site-pair-set"/>
+        <java-attributes>
+            <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of site pair set."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.onap.org.v4.RoutingInstances"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Set of instances for probes used to measure service level agreements"/>
+            <xml-property name="indexedProps" value="site-pair-set-id"/>
+            <xml-property name="uniqueProps" value="site-pair-set-id"/>
+            <xml-property name="container" value="site-pair-sets"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/site-pair-sets/site-pair-set/{site-pair-set-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="RoutingInstances">
+        <xml-properties>
+            <xml-property name="description" value="set of probes related to generic-vnf routing instance"/>
+        </xml-properties>
+        <xml-root-element name="routing-instances"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.onap.org.v4.RoutingInstance"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RoutingInstance">
+        <xml-root-element name="routing-instance"/>
+        <java-attributes>
+            <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of routing instance"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="rpm owner"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.onap.org.v4.SitePairs"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="routing-instance-id"/>
+            <xml-property name="uniqueProps" value="routing-instance-id"/>
+            <xml-property name="dependentOn" value="site-pair-set"/>
+            <xml-property name="container" value="routing-instances"/>
+            <xml-property name="uriTemplate" value="/routing-instances/routing-instance/{routing-instance-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="SitePairs">
+        <xml-properties>
+            <xml-property name="description" value="probe within a set"/>
+        </xml-properties>
+        <xml-root-element name="site-pairs"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.onap.org.v4.SitePair"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SitePair">
+        <xml-root-element name="site-pair"/>
+        <java-attributes>
+            <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="unique identifier of probe"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Prefix address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Prefix address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ip version, v4, v6"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The type of destinatination equipment. Could be Router, UCPE, etc."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.onap.org.v4.ClassesOfService"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="site-pair-id"/>
+            <xml-property name="uniqueProps" value="site-pair-id"/>
+            <xml-property name="dependentOn" value="routing-instance"/>
+            <xml-property name="container" value="site-pairs"/>
+            <xml-property name="uriTemplate" value="/site-pairs/site-pair/{site-pair-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="ClassesOfService">
+        <xml-properties>
+            <xml-property name="description" value="class-of-service of probe"/>
+        </xml-properties>
+        <xml-root-element name="classes-of-service"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.onap.org.v4.ClassOfService"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ClassOfService">
+        <xml-root-element name="class-of-service"/>
+        <java-attributes>
+            <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="unique identifier of probe"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="identifier of probe"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="type of probe"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="cos"/>
+            <xml-property name="dependentOn" value="site-pair"/>
+            <xml-property name="container" value="classes-of-service"/>
+            <xml-property name="uriTemplate" value="/classes-of-service/class-of-service/{cos}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="VpnBindings">
+        <xml-root-element name="vpn-bindings"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.onap.org.v4.VpnBinding"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VpnBinding">
+        <xml-root-element name="vpn-binding"/>
+        <java-attributes>
+            <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="VPN ID, globally unique within A&amp;AI"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="VPN Name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vpnType" name="vpn-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of the vpn, should be taken from enumerated/valid values"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="routeDistinguisher" name="route-distinguisher" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="routeTargets" name="route-targets" type="inventory.aai.onap.org.v4.RouteTargets"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList">
+                <xml-properties>
+                    <xml-property name="description" value="l3-networks relate to vpn-bindings"/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="VPN binding"/>
+            <xml-property name="nameProps" value="vpn-name,vpn-type"/>
+            <xml-property name="indexedProps" value="vpn-name,vpn-id,vpn-type"/>
+            <xml-property name="searchable" value="vpn-id,vpn-name"/>
+            <xml-property name="uniqueProps" value="vpn-id"/>
+            <xml-property name="container" value="vpn-bindings"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/vpn-bindings/vpn-binding/{vpn-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="VplsPes">
+        <xml-properties>
+            <xml-property name="description" value="Collection of VPLS Provider Edge routers"/>
+        </xml-properties>
+        <xml-root-element name="vpls-pes"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.onap.org.v4.VplsPe"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VplsPe">
+        <xml-root-element name="vpls-pe"/>
+        <java-attributes>
+            <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true"/>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="Temporary location for stag to get to VCE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v4.PInterfaces"/>
+            <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v4.LagInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="VPLS Provider Edge routers."/>
+            <xml-property name="indexedProps" value="prov-status,equipment-name"/>
+            <xml-property name="container" value="vpls-pes"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/vpls-pes/vpls-pe/{equipment-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="MulticastConfigurations">
+        <xml-properties>
+            <xml-property name="description" value="multicast configuration of generic-vnf ip-address"/>
+        </xml-properties>
+        <xml-root-element name="multicast-configurations"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.onap.org.v4.MulticastConfiguration"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="MulticastConfiguration">
+        <xml-root-element name="multicast-configuration"/>
+        <java-attributes>
+            <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of multicast configuration."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="protocol of multicast configuration"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="rp type of multicast configuration"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="multicast-configuration-id"/>
+            <xml-property name="uniqueProps" value="multicast-configuration-id"/>
+            <xml-property name="container" value="multicast-configurations"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/multicast-configurations/multicast-configuration/{multicast-configuration-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Vces">
+        <xml-properties>
+            <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma.  This object is deprecated."/>
+        </xml-properties>
+        <xml-root-element name="vces"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.onap.org.v4.Vce"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Vce">
+        <xml-root-element name="vce"/>
+        <java-attributes>
+            <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of VNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Alternate name of VNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="OBSOLETE -  do not use"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Network role being played by this VNF"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of VPE connected to this VCE."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router.  Implied length of /64."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Loopback0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="OBSOLETE -  see child relationships"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.onap.org.v4.PortGroups"/>
+            <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.onap.org.v4.Licenses"/>
+            <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.onap.org.v4.Entitlements"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma.  This object is deprecated."/>
+            <xml-property name="nameProps" value="vnf-name"/>
+            <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id"/>
+            <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2"/>
+            <xml-property name="uniqueProps" value="vnf-id"/>
+            <xml-property name="container" value="vces"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="extends" value="vnf"/>
+            <xml-property name="uriTemplate" value="/network/vces/vce/{vnf-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="PortGroups">
+        <xml-root-element name="port-groups"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.onap.org.v4.PortGroup"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="PortGroup">
+        <xml-root-element name="port-group"/>
+        <java-attributes>
+            <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of the interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron network id of this Interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron network name of this Interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID for port group in vmware"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Likely to duplicate value of neutron network name"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.onap.org.v4.CvlanTags"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Used to capture the network interfaces of this VCE"/>
+            <xml-property name="nameProps" value="port-group-name"/>
+            <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name"/>
+            <xml-property name="dependentOn" value="vce"/>
+            <xml-property name="container" value="port-groups"/>
+            <xml-property name="uriTemplate" value="/port-groups/port-group/{interface-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="CvlanTags">
+        <xml-root-element name="cvlan-tags"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.onap.org.v4.CvlanTagEntry"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="CvlanTagEntry">
+        <xml-root-element name="cvlan-tag-entry"/>
+        <java-attributes>
+            <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="See mis-na-virtualization-platform.yang"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="dependentOn" value="port-group"/>
+            <xml-property name="indexedProps" value="cvlan-tag"/>
+            <xml-property name="container" value="cvlan-tags"/>
+            <xml-property name="uriTemplate" value="/cvlan-tags/cvlan-tag/{cvlan-tag-cvlan-tag}"/>
+        </xml-properties>
+    </java-type>
+
+
+    <java-type name="Vnfcs">
+        <xml-properties>
+            <xml-property name="description" value="virtual network components associated with a vserver from application controller."/>
+        </xml-properties>
+        <xml-root-element name="vnfcs"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.onap.org.v4.Vnfc"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Vnfc">
+        <xml-root-element name="vnfc"/>
+        <java-attributes>
+            <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of vnfc."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="function code"/>
+                    <xml-property name="dbAlias" value="nfc-naming-code"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="type"/>
+                    <xml-property name="dbAlias" value="nfc-function"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="prov status of this vnfc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Oam V4 vip address of this vnfc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Group notation of VNFC"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation"/>
+            <xml-property name="searchable" value="vnfc-name"/>
+            <xml-property name="container" value="vnfcs"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/vnfcs/vnfc/{vnfc-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="L3Networks">
+        <xml-root-element name="l3-networks"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.onap.org.v4.L3Network"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="L3Network">
+        <xml-root-element name="l3-network"/>
+        <java-attributes>
+            <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Network ID, should be uuid. Unique across A&amp;AI."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the network, governed by some naming convention.."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkType" name="network-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of the network - who defines these values?"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Role the network plans - who defines these values?"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Network technology - who defines these values?"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron network id of this Interface"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="isBoundToVpn" name="is-bound-to-vpn" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="Set to true if bound to VPN"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="network role instance"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Contrail FQDN for the network"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name associated with the physical network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="boolean indicatating whether or not network is a provider network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="boolean indicatating whether or not network is a shared network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="boolean indicatating whether or not network is an external network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Path to the controller object."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator for whether the resource is considered operational."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.onap.org.v4.Subnets"/>
+            <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.onap.org.v4.CtagAssignments"/>
+            <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.onap.org.v4.SegmentationAssignments"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList">
+                <xml-properties>
+                    <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding"/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Generic network definition"/>
+            <xml-property name="nameProps" value="network-name"/>
+            <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-network-fqdn,network-role"/>
+            <xml-property name="searchable" value="network-id,network-name"/>
+            <xml-property name="uniqueProps" value="network-id"/>
+            <xml-property name="container" value="l3-networks"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/l3-networks/l3-network/{network-id}"/>
+        </xml-properties>
+    </java-type>
+    <java-type name="NetworkPolicies">
+        <xml-root-element name="network-policies"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.onap.org.v4.NetworkPolicy"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="NetworkPolicy">
+        <xml-root-element name="network-policy"/>
+        <java-attributes>
+            <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="UUID representing unique key to this instance"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Contrail FQDN for the policy"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ID for the openStack Heat instance"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="nameProps" value="network-policy-fqdn"/>
+            <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn"/>
+            <xml-property name="searchable" value="network-policy-id,network-policy-fqdn"/>
+            <xml-property name="uniqueProps" value="network-policy-id"/>
+            <xml-property name="container" value="network-policies"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/network-policies/network-policy/{network-policy-id}"/>
+        </xml-properties>
+    </java-type>
+    <java-type name="CtagAssignments">
+        <xml-root-element name="ctag-assignments"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.onap.org.v4.CtagAssignment"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="CtagAssignment">
+        <xml-root-element name="ctag-assignment"/>
+        <java-attributes>
+            <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="id."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="vlan-id-inner"/>
+            <xml-property name="dependentOn" value="l3-network"/>
+            <xml-property name="container" value="ctag-assignments"/>
+            <xml-property name="uriTemplate" value="/ctag-assignments/ctag-assignment/{vlan-id-inner}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Subnets">
+        <xml-root-element name="subnets"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.onap.org.v4.Subnet"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Subnet">
+        <xml-root-element name="subnet"/>
+        <java-attributes>
+            <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Subnet ID, should be UUID."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name associated with the subnet."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Neutron id of this subnet"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="gateway ip address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="network start address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="cidr mask"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ip version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="dhcpEnabled" name="dhcp-enabled" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="dhcp enabled"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the start address reserved for use by dhcp"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the last address reserved for use by dhcp"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="indexedProps" value="subnet-id,subnet-name"/>
+            <xml-property name="nameProps" value="subnet-name"/>
+            <xml-property name="uniqueProps" value="subnet-id"/>
+            <xml-property name="dependentOn" value="l3-network"/>
+            <xml-property name="container" value="subnets"/>
+            <xml-property name="uriTemplate" value="/subnets/subnet/{subnet-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="GenericVnfs">
+        <xml-properties>
+            <xml-property name="description" value="Collection of VNFs"/>
+        </xml-properties>
+        <xml-root-element name="generic-vnfs"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.onap.org.v4.GenericVnf"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="GenericVnf">
+        <xml-root-element name="generic-vnf"/>
+        <java-attributes>
+            <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfName" name="vnf-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of VNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Alternate name of VNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    <xml-property name="suggestibleOnSearch" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator for whether the resource is considered operational.  Valid values are in-service-path and out-of-service-path."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="OBSOLETE -  do not use"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Client should send valid enumerated value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, used by MSO."/>
+                    <xml-property name="suggestibleOnSearch" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="identifier of managed by ATT or customer"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v4 Loopback0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v6 Loopback address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v6 management address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long">
+                <xml-properties>
+                    <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only uCPE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="description" value="indicates whether generic-vnf access uses SSH"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="entitlementAssignmentGroupUuid" name="entitlement-assignment-group-uuid" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of the Entitlement group used for licensing VNFs, OBSOLETE -  See child relationships."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of the specific entitlement resource.  OBSOLETE -  See child relationships."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="licenseAssignmentGroupUuid" name="license-assignment-group-uuid" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of the license assignment group.  OBSOLETE -  See child relationships."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="licenseKeyUuid" name="license-key-uuid" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of the actual license resource.  OBSOLETE -  See child relationships."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="as-number of the VNF"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="represents sub zone of the rr plane"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="nfType" name="nf-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Generic description of the type of NF"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="nfFunction" name="nf-function" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="English description of Network function that the specific VNF deployment is providing"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="role in the network that this model will be providing"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="nfNamingCode" name="nf-naming-code" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="string assigned to this model used for naming purposes"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Path to the controller object."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v4.LInterfaces"/>
+            <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v4.LagInterfaces"/>
+            <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.onap.org.v4.VfModules"/>
+            <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.onap.org.v4.Licenses"/>
+            <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.onap.org.v4.Entitlements"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="General purpose VNF"/>
+            <xml-property name="nameProps" value="vnf-name"/>
+            <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,nf-type,nf-function,nf-naming-code,nf-role"/>
+            <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2"/>
+            <xml-property name="uniqueProps" value="vnf-id"/>
+            <xml-property name="container" value="generic-vnfs"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="extends" value="vnf"/>
+            <xml-property name="containsSuggestibleProps" value="true"/>
+            <xml-property name="suggestionAliases" value="VNFs"/>
+            <xml-property name="uriTemplate" value="/network/generic-vnfs/generic-vnf/{vnf-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="VfModules">
+        <xml-properties>
+            <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs"/>
+        </xml-properties>
+        <xml-root-element name="vf-modules"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.onap.org.v4.VfModule"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VfModule">
+        <xml-root-element name="vf-module"/>
+        <java-attributes>
+            <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of vf-module."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of vf-module"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="isBaseVfModule" name="is-base-vf-module" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="used to indicate whether or not this object is base vf module"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the Contrail unique ID for a service-instance"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="moduleIndex" name="module-index" type="java.lang.Integer">
+                <xml-properties>
+                    <xml-property name="description" value="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Path to the controller object."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="a deployment unit of VNFCs"/>
+            <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-service-instance-fqdn"/>
+            <xml-property name="searchable" value="vf-module-id,vf-module-name"/>
+            <xml-property name="dependentOn" value="generic-vnf"/>
+            <xml-property name="container" value="vf-modules"/>
+            <xml-property name="uriTemplate" value="/vf-modules/vf-module/{vf-module-id}"/>
+        </xml-properties>
+    </java-type>
+
+
+    <java-type name="LagLinks">
+        <xml-properties>
+            <xml-property name="description" value="Collection of link aggregation connections"/>
+        </xml-properties>
+        <xml-root-element name="lag-links"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.onap.org.v4.LagLink"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="LagLink">
+        <xml-root-element name="lag-link"/>
+        <java-attributes>
+            <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Alphabetical concatenation of lag-interface names"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="LAG links can connect lag-interfaces"/>
+            <xml-property name="indexedProps" value="link-name"/>
+            <xml-property name="container" value="lag-links"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/lag-links/lag-link/{link-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Newvces">
+        <xml-properties>
+            <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+        </xml-properties>
+        <xml-root-element name="newvces"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.onap.org.v4.Newvce"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Newvce">
+        <xml-root-element name="newvce"/>
+        <java-attributes>
+            <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of VNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Alternate name of VNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="OBSOLETE -  do not use"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Client should send valid enumerated value."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v4 Loopback0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v4.LInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+            <xml-property name="nameProps" value="vnf-name"/>
+            <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2"/>
+            <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2"/>
+            <xml-property name="uniqueProps" value="vnf-id2"/>
+            <xml-property name="container" value="newvces"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/newvces/newvce/{vnf-id2}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Pnfs">
+        <xml-properties>
+            <xml-property name="description" value="Collection of Physical Network Functions."/>
+        </xml-properties>
+        <xml-root-element name="pnfs"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.onap.org.v4.Pnf"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Pnf">
+        <xml-root-element name="pnf"/>
+        <java-attributes>
+            <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="unique name of Physical Network Function."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="name of Physical Network Function."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="source of name2"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="id of pnf"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="identifier of managed by ATT or customer"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                <xml-properties>
+                    <xml-property name="defaultValue" value="false"/>
+                    <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Serial number of the device"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV4 Loopback 0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV6 Loopback 0 address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV4 AIM address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV6 AIM address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="IPV6 OAM address"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="CANOPI's inventory status.  Only set with values exactly as defined by CANOPI."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Nf Role is the role performed by this instance in the network."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v4.PInterfaces"/>
+            <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v4.LagInterfaces"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE."/>
+            <xml-property name="indexedProps" value="pnf-name,orchestration-status,inv-status"/>
+            <xml-property name="searchable" value="pnf-name"/>
+            <xml-property name="uniqueProps" value="pnf-name"/>
+            <xml-property name="container" value="pnfs"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/pnfs/pnf/{pnf-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="PhysicalLinks">
+        <xml-properties>
+            <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+        </xml-properties>
+        <xml-root-element name="physical-links"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.onap.org.v4.PhysicalLink"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="maximumDepth" value="0"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="PhysicalLink">
+        <xml-root-element name="physical-link"/>
+        <java-attributes>
+            <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the numeric part of the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Circuit it"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Dual access mode (e.g., primary, secondary"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="To provide information on who manages this circuit. A&amp;AI or 3rd party transport provider"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the service Provider on this link."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+            <xml-property name="indexedProps" value="circuit-id,link-name"/>
+            <xml-property name="alternateKeys1" value="circuit-id"/>
+            <xml-property name="container" value="physical-links"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="searchable" value="link-name,circuit-id"/>
+            <xml-property name="uriTemplate" value="/network/physical-links/physical-link/{link-name}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="VigServers">
+        <xml-root-element name="vig-servers"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.onap.org.v4.VigServer"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="VigServer">
+        <xml-root-element name="vig-server"/>
+        <java-attributes>
+            <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v4 IP of the vig server"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="v6 IP of the vig server"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607"/>
+            <xml-property name="indexedProps" value="vig-address-type"/>
+            <xml-property name="dependentOn" value="ipsec-configuration"/>
+            <xml-property name="container" value="vig-servers"/>
+            <xml-property name="uriTemplate" value="/vig-servers/vig-server/{vig-address-type}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="IpsecConfigurations">
+        <xml-root-element name="ipsec-configurations"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.onap.org.v4.IpsecConfiguration"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="IpsecConfiguration">
+        <xml-root-element name="ipsec-configuration"/>
+        <java-attributes>
+            <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="UUID of this configuration"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="ATT can offer a shared DMZ or a DMZ specific to a customer"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Network address of shared DMZ"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="can be 1 or 2"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="pre-shared key for the above group name "/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Lifetime for IKEv1 SA"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="md5, sha1, sha256, sha384"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Life time for IPSec SA"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="enable PFS or not"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="user ID for xAuth, sm-user,ucpeHostName,nmteHostName"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The time between DPD probe"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+            <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.onap.org.v4.VigServers"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C"/>
+            <xml-property name="indexedProps" value="ipsec-configuration-id"/>
+            <xml-property name="uniqueProps" value="ipsec-configuration-id"/>
+            <xml-property name="container" value="ipsec-configurations"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}"/>
+        </xml-properties>
+    </java-type>
+
+
+    <java-type name="NotificationEvent">
+        <xml-root-element name="notification-event"/>
+        <java-attributes>
+            <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String"/>
+            <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.onap.org.v4.NotificationEventHeader"/>
+            <xml-any-element java-attribute="entity"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="NotificationEventHeader">
+        <xml-root-element name="notification-event-header"/>
+        <java-attributes>
+            <xml-element java-attribute="id" name="id" type="java.lang.String"/>
+            <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String"/>
+            <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String"/>
+            <xml-element java-attribute="domain" name="domain" type="java.lang.String"/>
+            <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String"/>
+            <xml-element java-attribute="severity" name="severity" type="java.lang.String"/>
+            <xml-element java-attribute="eventType" name="event-type" type="java.lang.String"/>
+            <xml-element java-attribute="version" name="version" type="java.lang.String"/>
+            <xml-element java-attribute="action" name="action" type="java.lang.String"/>
+            <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String"/>
+            <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String"/>
+            <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String"/>
+            <xml-element java-attribute="status" name="status" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="AaiInternal">
+        <xml-root-element name="aai-internal"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.onap.org.v4.ReservedPropNames"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.onap.org.v4.EdgePropNames"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="ReservedPropNames">
+        <xml-properties>
+            <xml-property name="description" value="Internal map to define some reserved properties of a vertex"/>
+            <xml-property name="uniqueProps" value="aai-unique-key"/>
+            <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri"/>
+        </xml-properties>
+        <xml-root-element name="reserved-prop-names"/>
+        <java-attributes>
+            <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String"/>
+            <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String"/>
+            <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long"/>
+            <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String"/>
+            <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long"/>
+            <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String"/>
+            <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="EdgePropNames">
+        <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now -->
+        <xml-properties>
+            <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules"/>
+            <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV"/>
+        </xml-properties>
+        <xml-root-element name="edge-prop-names"/>
+        <java-attributes>
+            <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String"/>
+            <xml-element java-attribute="direction" name="direction" type="java.lang.String"/>
+            <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String"/>
+            <xml-element java-attribute="containsOtherV" name="contains-other-v" type="java.lang.String"/>
+            <xml-element java-attribute="deleteOtherV" name="delete-other-v" type="java.lang.String"/>
+            <xml-element java-attribute="svcinfra" name="SVC-INFRA" type="java.lang.String"/>
+            <xml-element java-attribute="preventDelete" name="prevent-delete" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Models">
+        <xml-properties>
+            <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models"/>
+        </xml-properties>
+        <xml-root-element name="models"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.onap.org.v4.Model"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Model">
+        <xml-root-element name="model"/>
+        <xml-properties>
+            <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version"/>
+            <xml-property name="nameProps" value="model-type"/>
+            <xml-property name="indexedProps" value="model-invariant-id,model-type"/>
+            <xml-property name="uniqueProps" value="model-invariant-id"/>
+            <xml-property name="container" value="models"/>
+            <xml-property name="namespace" value="service-design-and-creation"/>
+            <xml-property name="uriTemplate" value="/service-design-and-creation/models/model/{model-invariant-id}"/>
+        </xml-properties>
+        <java-attributes>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.onap.org.v4.ModelVers"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+
+    <java-type name="ModelVers">
+        <xml-root-element name="model-vers"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="modelVer" name="model-ver" type="inventory.aai.onap.org.v4.ModelVer"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ModelVer">
+        <xml-root-element name="model-ver"/>
+        <xml-properties>
+            <xml-property name="description" value="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models"/>
+            <xml-property name="nameProps" value="model-name"/>
+            <xml-property name="indexedProps" value="model-version-id,model-name,model-version"/>
+            <xml-property name="uniqueProps" value="model-version-id"/>
+            <xml-property name="container" value="model-vers"/>
+            <xml-property name="uriTemplate" value="/model-vers/model-ver/{model-version-id}"/>
+        </xml-properties>
+        <java-attributes>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the model, which can change from version to version."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Description"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v4.ModelElements"/>
+            <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v4.Metadata"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ModelElements">
+        <xml-root-element name="model-elements"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.onap.org.v4.ModelElement"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ModelElement">
+        <xml-properties>
+            <xml-property name="description" value="Defines how other models combine to make up a higher-level model."/>
+            <xml-property name="uniqueProps" value="model-element-uuid"/>
+            <xml-property name="indexedProps" value="model-element-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="model-elements"/>
+            <xml-property name="uriTemplate" value="/model-elements/model-element/{model-element-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="model-element"/>
+        <java-attributes>
+            <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="How many of this type of element are required/allowed"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String">
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v4.ModelElements">
+                <xml-properties>
+                    <xml-property name="description" value="Defines how other models combine to make up a higher-level model"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.onap.org.v4.ModelConstraints">
+                <xml-properties>
+                    <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ModelConstraints">
+        <xml-root-element name="model-constraints"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.onap.org.v4.ModelConstraint"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ModelConstraint">
+        <xml-properties>
+            <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+            <xml-property name="uniqueProps" value="model-constraint-uuid"/>
+            <xml-property name="indexedProps" value="model-constraint-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="model-constraints"/>
+            <xml-property name="uriTemplate" value="/model-constraints/model-constraint/{model-constraint-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="model-constraint"/>
+        <java-attributes>
+            <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.onap.org.v4.ConstrainedElementSets"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ConstrainedElementSets">
+        <xml-root-element name="constrained-element-sets"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.onap.org.v4.ConstrainedElementSet"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ConstrainedElementSet">
+        <xml-properties>
+            <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+            <xml-property name="uniqueProps" value="constrained-element-set-uuid"/>
+            <xml-property name="indexedProps" value="constrained-element-set-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="constrained-element-sets"/>
+            <xml-property name="uriTemplate" value="/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="constrained-element-set"/>
+        <java-attributes>
+            <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.onap.org.v4.ElementChoiceSets"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ElementChoiceSets">
+        <xml-root-element name="element-choice-sets"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.onap.org.v4.ElementChoiceSet"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ElementChoiceSet">
+        <xml-properties>
+            <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+            <xml-property name="uniqueProps" value="element-choice-set-uuid"/>
+            <xml-property name="indexedProps" value="element-choice-set-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="element-choice-sets"/>
+            <xml-property name="uriTemplate" value="/element-choice-sets/element-choice-set/{element-choice-set-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="element-choice-set"/>
+        <java-attributes>
+            <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v4.ModelElements"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="NamedQueries">
+        <xml-root-element name="named-queries"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v4.NamedQuery"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="NamedQuery">
+        <xml-properties>
+            <xml-property name="description" value="TBD"/>
+            <xml-property name="nameProps" value="named-query-name"/>
+            <xml-property name="uniqueProps" value="named-query-uuid"/>
+            <xml-property name="indexedProps" value="named-query-uuid,named-query-name"/>
+            <xml-property name="container" value="named-queries"/>
+            <xml-property name="namespace" value="service-design-and-creation"/>
+            <xml-property name="uriTemplate" value="/service-design-and-creation/named-queries/named-query/{named-query-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="named-query"/>
+        <java-attributes>
+            <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true"/>
+            <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String">
+                <xml-element-wrapper name="required-input-params"/>
+            </xml-element>
+            <xml-element java-attribute="description" name="description" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v4.NamedQueryElements"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="NamedQueryElements">
+        <xml-root-element name="named-query-elements"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.onap.org.v4.NamedQueryElement"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="NamedQueryElement">
+        <xml-properties>
+            <xml-property name="description" value="TBD"/>
+            <xml-property name="uniqueProps" value="named-query-element-uuid"/>
+            <xml-property name="indexedProps" value="named-query-element-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="named-query-elements"/>
+            <xml-property name="uriTemplate" value="/named-query-elements/named-query-element/{named-query-element-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="named-query-element"/>
+        <java-attributes>
+            <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String"/>
+            <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String"/>
+            <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v4.NamedQueryElements"/>
+            <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.onap.org.v4.RelatedLookups"/>
+            <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.onap.org.v4.PropertyConstraints"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RelatedLookups">
+        <xml-root-element name="related-lookups"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.onap.org.v4.RelatedLookup"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RelatedLookup">
+        <xml-properties>
+            <xml-property name="description" value="TBD"/>
+            <xml-property name="uniqueProps" value="related-lookup-uuid"/>
+            <xml-property name="indexedProps" value="related-lookup-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="related-lookups"/>
+            <xml-property name="uriTemplate" value="/related-lookups/related-lookup/{related-lookup-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="related-lookup"/>
+        <java-attributes>
+            <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String"/>
+            <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="PropertyConstraints">
+        <xml-root-element name="property-constraints"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.onap.org.v4.PropertyConstraint"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="PropertyConstraint">
+        <xml-properties>
+            <xml-property name="description" value="TBD"/>
+            <xml-property name="uniqueProps" value="property-constraint-uuid"/>
+            <xml-property name="indexedProps" value="property-constraint-uuid"/>
+            <xml-property name="allowDirectRead" value="true"/>
+            <xml-property name="allowDirectWrite" value="false"/>
+            <xml-property name="container" value="property-constraints"/>
+            <xml-property name="uriTemplate" value="/property-constraints/property-constraint/{property-constraint-uuid}"/>
+        </xml-properties>
+        <xml-root-element name="property-constraint"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="autoGenerateUuid" value="true"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="propertyName" name="property-name" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" required="true" type="java.lang.String"/>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ModelAndNamedQuerySearch">
+        <xml-properties>
+            <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query"/>
+        </xml-properties>
+        <xml-root-element name="model-and-named-query-search"/>
+        <java-attributes>
+            <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.onap.org.v4.QueryParameters"/>
+            <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.onap.org.v4.InstanceFilters"/>
+            <xml-element java-attribute="secondaryFilts" name="secondary-filts" type="inventory.aai.onap.org.v4.SecondaryFilts"/>
+            <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String"/>
+            <xml-element java-attribute="secondaryFilterCutPoint" name="secondary-filter-cut-point" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="QueryParameters">
+        <xml-properties>
+            <xml-property name="description" value="QueryParameters for performing a named-query or model query"/>
+        </xml-properties>
+        <xml-root-element name="query-parameters"/>
+        <java-attributes>
+            <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v4.NamedQuery"/>
+            <xml-element java-attribute="model" name="model" type="inventory.aai.onap.org.v4.OverloadedModel"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="OverloadedModel">
+        <xml-root-element name="overloaded-model"/>
+        <xml-properties>
+            <xml-property name="description" value="Allows for legacy POST of old-style and new-style models"/>
+        </xml-properties>
+        <java-attributes>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Name of the model, which can change from version to version."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Invariant unique ID which does not change from version to version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Description"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.onap.org.v4.ModelVers"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InstanceFilters">
+        <xml-properties>
+            <xml-property name="description" value="InstanceFilters for performing a named-query or model query"/>
+        </xml-properties>
+        <xml-root-element name="instance-filters"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.onap.org.v4.InstanceFilter"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InstanceFilter">
+        <xml-properties>
+            <xml-property name="description" value="InstanceFilter for performing a named-query or model query"/>
+            <xml-property name="container" value="instance-filters"/>
+        </xml-properties>
+        <xml-root-element name="instance-filter"/>
+        <java-attributes>
+            <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SecondaryFilts">
+        <xml-properties>
+            <xml-property name="description" value="SecondaryFilts for performing a named-query or model query"/>
+        </xml-properties>
+        <xml-root-element name="secondary-filts"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilt" name="secondary-filt" type="inventory.aai.onap.org.v4.SecondaryFilt"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SecondaryFilt">
+        <xml-properties>
+            <xml-property name="description" value="SecondaryFilt for performing a named-query or model query"/>
+        </xml-properties>
+        <xml-root-element name="secondary-filt"/>
+        <java-attributes>
+            <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Properties">
+        <xml-properties>
+            <xml-property name="description" value="Property holder for query properties or instance properties"/>
+        </xml-properties>
+        <xml-root-element name="properties"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ResponseList">
+        <xml-properties>
+            <xml-property name="description" value="Response container for the results of a named-query or model query"/>
+        </xml-properties>
+        <xml-root-element name="response-list"/>
+        <java-attributes>
+            <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v4.InventoryResponseItems"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InventoryResponseItems">
+        <xml-properties>
+            <xml-property name="description" value="Container for inventory items in response list"/>
+            <xml-property name="container" value="response-list"/>
+        </xml-properties>
+        <xml-root-element name="inventory-response-items"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.onap.org.v4.InventoryResponseItem"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InventoryResponseItem">
+        <xml-properties>
+            <xml-property name="description" value="Inventory item for response list"/>
+            <xml-property name="container" value="inventory-response-items"/>
+        </xml-properties>
+        <xml-root-element name="inventory-response-item"/>
+        <java-attributes>
+            <xml-element java-attribute="modelName" name="model-name" type="java.lang.String"/>
+            <xml-any-element java-attribute="item"/>
+            <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.onap.org.v4.ExtraProperties"/>
+            <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v4.InventoryResponseItems"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ExtraProperties">
+        <xml-properties>
+            <xml-property name="description" value="Extra properties for inventory item for response list"/>
+        </xml-properties>
+        <xml-root-element name="extra-properties"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.onap.org.v4.ExtraProperty"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="ExtraProperty">
+        <xml-root-element name="extra-property"/>
+        <java-attributes>
+            <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+            <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RouteTableReferences">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack route table references"/>
+        </xml-properties>
+        <xml-root-element name="route-table-references"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.onap.org.v4.RouteTableReference"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="RouteTableReference">
+        <xml-root-element name="route-table-reference"/>
+        <java-attributes>
+            <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="FQDN entry in the route table."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+
+        <xml-properties>
+            <xml-property name="description" value="Openstack route table reference."/>
+            <xml-property name="nameProps" value="route-table-reference-fqdn"/>
+            <xml-property name="uniqueProps" value="route-table-reference-id"/>
+            <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn"/>
+            <xml-property name="container" value="route-table-references"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/route-table-references/route-table-reference/{route-table-reference-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="InstanceGroups">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack route table references"/>
+        </xml-properties>
+        <xml-root-element name="instance-groups"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="instanceGroup" name="instance-group" type="inventory.aai.onap.org.v4.InstanceGroup"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="InstanceGroup">
+        <xml-root-element name="instance-group"/>
+        <java-attributes>
+            <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Instance Group ID, UUID assigned to this instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="description" name="description" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Descriptive text to help identify the usage of this instance-group"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="type" name="type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Only valid value today is lower case ha for high availability"/>
+                    <xml-property name="dbAlias" value="instance-group-type"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="subType" name="sub-type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+
+        <xml-properties>
+            <xml-property name="description" value="General mechanism for grouping instances"/>
+            <xml-property name="nameProps" value="description"/>
+            <xml-property name="uniqueProps" value="id"/>
+            <xml-property name="searchable" value="id,description"/>
+            <xml-property name="indexedProps" value="id,description,type,sub-type"/>
+            <xml-property name="container" value="instance-groups"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/instance-groups/instance-group/{id}"/>
+        </xml-properties>
+    </java-type>
+
+
+    <java-type name="SegmentationAssignments">
+        <xml-properties>
+            <xml-property name="description" value="Collection of openstack segmentation assignments"/>
+        </xml-properties>
+        <xml-root-element name="segmentation-assignments"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.onap.org.v4.SegmentationAssignment"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="SegmentationAssignment">
+        <xml-root-element name="segmentation-assignment"/>
+        <java-attributes>
+            <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Openstack segmentation assignment."/>
+            <xml-property name="indexedProps" value="segmentation-id"/>
+            <xml-property name="dependentOn" value="l3-network"/>
+            <xml-property name="container" value="segmentation-assignments"/>
+            <xml-property name="uriTemplate" value="/segmentation-assignments/segmentation-assignment/{segmentation-id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="AllottedResources">
+        <xml-properties>
+            <xml-property name="description" value="This object is used to store slices of services being offered"/>
+        </xml-properties>
+        <xml-root-element name="allotted-resources"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="allottedResource" name="allotted-resource" type="inventory.aai.onap.org.v4.AllottedResource"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="AllottedResource">
+        <xml-root-element name="allotted-resource"/>
+        <java-attributes>
+            <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Allotted Resource id UUID assigned to this instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="description" name="description" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The descriptive information assigned to this allotted resource instance"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Link back to more information in the controller"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-version-id"/>
+                    <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="deployment"/>
+                    <xml-property name="requires" value="model-invariant-id"/>
+                    <xml-property name="dbAlias" value="model-version-id-local"/>
+                    <xml-property name="privateEdge" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    <xml-property name="visibility" value="internal"/>
+                    <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Orchestration status"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="type" name="type" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Generic description of the type of allotted resource."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="role" name="role" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="role in the network that this resource will be providing."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="tunnelXconnects" name="tunnel-xconnects" type="inventory.aai.onap.org.v4.TunnelXconnects"/>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+
+        <xml-properties>
+            <xml-property name="description" value="Represents a slice or partial piece of a resource that gets separately allotted"/>
+            <xml-property name="nameProps" value="description"/>
+            <xml-property name="uniqueProps" value="id"/>
+            <xml-property name="indexedProps" value="id,model-invariant-id,model-version-id,type,role"/>
+            <xml-property name="dependentOn" value="service-instance"/>
+            <xml-property name="container" value="allotted-resources"/>
+            <!--  <xml-property name="namespace" value="network" /> -->
+            <xml-property name="uriTemplate" value="/allotted-resources/allotted-resource/{id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="TunnelXconnects">
+        <xml-properties>
+            <xml-property name="description" value="This object is used to store the specific tunnel cross connect aspects of an allotted resource"/>
+        </xml-properties>
+        <xml-root-element name="tunnel-xconnects"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="tunnelXconnect" name="tunnel-xconnect" type="inventory.aai.onap.org.v4.TunnelXconnect"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="TunnelXconnect">
+        <xml-root-element name="tunnel-xconnect"/>
+        <java-attributes>
+            <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Allotted Resource id UUID assigned to this instance."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The WAN uplink bandwidth for WAN1"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The WAN downlink bandwidth for WAN1"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The WAN uplink bandwidth for WAN2"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="The WAN downlink bandwidth for WAN2"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+
+        <xml-properties>
+            <xml-property name="description" value="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted"/>
+            <xml-property name="uniqueProps" value="id"/>
+            <xml-property name="indexedProps" value="id"/>
+            <xml-property name="dependentOn" value="allotted-resource"/>
+            <xml-property name="container" value="tunnel-xconnects"/>
+            <!--  <xml-property name="namespace" value="network" /> -->
+            <xml-property name="uriTemplate" value="/tunnel-xconnects/tunnel-xconnect/{id}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Entitlements">
+        <xml-properties>
+            <xml-property name="description" value="Entitlements, keyed by group-uuid and resource-uuid, related to license management"/>
+        </xml-properties>
+        <xml-root-element name="entitlements"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="entitlement" name="entitlement" type="inventory.aai.onap.org.v4.Entitlement"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Entitlement">
+        <xml-root-element name="entitlement"/>
+        <java-attributes>
+            <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID for the entitlement group the resource comes from, should be uuid."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of an entitlement resource. "/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Metadata for entitlement group."/>
+            <xml-property name="indexedProps" value="group-uuid,resource-uuid"/>
+            <xml-property name="dependentOn" value="generic-vnf,vce"/>
+            <xml-property name="container" value="entitlements"/>
+            <xml-property name="uriTemplate" value="/entitlements/entitlement/{group-uuid}/{resource-uuid}"/>
+        </xml-properties>
+    </java-type>
+
+
+    <java-type name="Licenses">
+        <xml-properties>
+            <xml-property name="description" value="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management"/>
+        </xml-properties>
+        <xml-root-element name="licenses"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="license" name="license" type="inventory.aai.onap.org.v4.License"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="License">
+        <xml-root-element name="license"/>
+        <java-attributes>
+            <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID for the license group the resource belongs to, should be uuid."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique ID of a license resource. "/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Metadata for license group."/>
+            <xml-property name="indexedProps" value="group-uuid,resource-uuid"/>
+            <xml-property name="dependentOn" value="generic-vnf,vce"/>
+            <xml-property name="container" value="licenses"/>
+            <xml-property name="uriTemplate" value="/licenses/license/{group-uuid}/{resource-uuid}"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Vnf">
+        <xml-root-element name="vnf"/>
+        <java-attributes>
+            <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                </xml-properties>
+            </xml-element>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Abstract vnf class"/>
+            <xml-property name="indexedProps" value="vnf-id"/>
+            <xml-property name="uniqueProps" value="vnf-id"/>
+            <xml-property name="inheritors" value="vce,generic-vnf"/>
+            <xml-property name="abstract" value="true"/>
+        </xml-properties>
+    </java-type>
+
+    <java-type name="Zones">
+        <xml-properties>
+            <xml-property name="description" value="Collection of zones"/>
+        </xml-properties>
+        <xml-root-element name="zones"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="zone" name="zone" type="inventory.aai.onap.org.v4.Zone"/>
+        </java-attributes>
+    </java-type>
+
+    <java-type name="Zone">
+        <xml-root-element name="zone"/>
+        <java-attributes>
+            <xml-element java-attribute="zoneId" name="zone-id" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Code assigned by AIC to the zone"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="zoneName" name="zone-name" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="English name associated with the zone"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="designType" name="design-type" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Design of zone [Medium/Large…]"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="zoneContext" name="zone-context" required="true" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Context of zone [production/test]"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="status" name="status" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Status of a zone."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Concurrency value"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="A zone is a grouping of assets in a location homing to the same connections into the CBB"/>
+            <xml-property name="nameProps" value="zone-name"/>
+            <xml-property name="indexedProps" value="zone-id,design-type,zone-context"/>
+            <xml-property name="uniqueProps" value="zone-id"/>
+            <xml-property name="container" value="zones"/>
+            <xml-property name="namespace" value="network"/>
+            <xml-property name="uriTemplate" value="/network/zones/zone/{zone-id}"/>
+        </xml-properties>
+    </java-type>
+    <java-type name="RouteTargets">
+        <xml-properties>
+            <xml-property name="description" value="Collection of route target information"/>
+        </xml-properties>
+        <xml-root-element name="route-targets"/>
+        <java-attributes>
+            <xml-element container-type="java.util.ArrayList" java-attribute="routeTarget" name="route-target" type="inventory.aai.onap.org.v4.RouteTarget"/>
+        </java-attributes>
+    </java-type>
+    <java-type name="RouteTarget">
+        <xml-root-element name="route-target"/>
+        <java-attributes>
+            <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Number used to identify an RT, globally unique in the network"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="routeTargetRole" name="route-target-role" required="true" type="java.lang.String" xml-key="true">
+                <xml-properties>
+                    <xml-property name="description" value="Role assigned to this route target"/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                <xml-properties>
+                    <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                </xml-properties>
+            </xml-element>
+            <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v4.RelationshipList"/>
+        </java-attributes>
+        <xml-properties>
+            <xml-property name="description" value="Route target information"/>
+            <xml-property name="container" value="route-targets"/>
+            <xml-property name="dependentOn" value="vpn-binding"/>
+            <xml-property name="canBeLinked" value="true"/>
+            <xml-property name="uriTemplate" value="/route-targets/route-target/{global-route-target}/{route-target-role}"/>
+        </xml-properties>
+    </java-type>
+</java-types>
+</xml-bindings>
\ No newline at end of file
diff --git a/aai-core/src/test/resources/oxm/dbalias_oxm_one.xml b/aai-core/src/test/resources/oxm/dbalias_oxm_one.xml
new file mode 100644 (file)
index 0000000..74aca15
--- /dev/null
@@ -0,0 +1,4237 @@
+<!--
+  ============LICENSE_START=======================================================
+  org.onap.aai
+  ================================================================================
+  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=========================================================
+  -->
+<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.onap.org.v1" xml-mapping-metadata-complete="true">
+    <xml-schema element-form-default="QUALIFIED">
+        <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v1"/>
+    </xml-schema>
+    <java-types>
+        <java-type name="Inventory">
+            <xml-root-element name="inventory"/>
+            <java-attributes>
+                <xml-element java-attribute="search" name="search" type="inventory.aai.onap.org.v1.Search"/>
+                <xml-element java-attribute="actions" name="actions" type="inventory.aai.onap.org.v1.Actions"/>
+                <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.onap.org.v1.CloudInfrastructure"/>
+                <xml-element java-attribute="business" name="business" type="inventory.aai.onap.org.v1.Business"/>
+                <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.onap.org.v1.ServiceDesignAndCreation"/>
+                <xml-element java-attribute="network" name="network" type="inventory.aai.onap.org.v1.Network"/>
+                <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.onap.org.v1.AaiInternal"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Search">
+            <xml-root-element name="search"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.onap.org.v1.EdgeTagQueryResult"/>
+                <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.onap.org.v1.EdgeTagQueryRequest"/>
+                <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.onap.org.v1.SearchResults"/>
+                <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.onap.org.v1.SdnZoneResponse"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="EdgeTagQueryResult">
+            <xml-root-element name="edge-tag-query-result"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v1.TaggedInventoryItemList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="TaggedInventoryItemList">
+            <xml-root-element name="tagged-inventory-item-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.onap.org.v1.InventoryItem"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryItem">
+            <xml-root-element name="inventory-item"/>
+            <java-attributes>
+                <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String"/>
+                <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.onap.org.v1.InventoryItemData"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v1.TaggedInventoryItemList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryItemData">
+            <xml-root-element name="inventory-item-data"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="EdgeTagQueryRequest">
+            <xml-root-element name="edge-tag-query-request"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String"/>
+                <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String"/>
+                <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.onap.org.v1.StartNodeFilter"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.onap.org.v1.IncludeNodeFilter"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.onap.org.v1.SecondaryFilter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="StartNodeFilter">
+            <xml-root-element name="start-node-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="IncludeNodeFilter">
+            <xml-root-element name="include-node-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SecondaryFilter">
+            <xml-root-element name="secondary-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SearchResults">
+            <xml-root-element name="search-results"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.onap.org.v1.ResultData"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ResultData">
+            <xml-root-element name="result-data"/>
+            <java-attributes>
+                <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The specific type of node in the A&amp;AI graph"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The URL to the specific resource"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SdnZoneResponse">
+            <xml-root-element name="sdn-zone-response"/>
+            <java-attributes>
+                <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v1.OamNetworks"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.onap.org.v1.AzAndDvsSwitches"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AzAndDvsSwitches">
+            <xml-root-element name="az-and-dvs-switches"/>
+            <java-attributes>
+                <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v1.DvsSwitches"/>
+                <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v1.AvailabilityZone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Actions">
+            <xml-properties>
+                <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)."/>
+            </xml-properties>
+            <xml-root-element name="actions"/>
+            <java-attributes>
+                <xml-element java-attribute="update" name="update" type="inventory.aai.onap.org.v1.Update"/>
+                <xml-element java-attribute="notify" name="notify" type="inventory.aai.onap.org.v1.Notify"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Update">
+            <xml-properties>
+                <xml-property name="description" value="Serves a PATCH like function.  Does not enforce concurrency control.  Clear each usage with AAI team."/>
+            </xml-properties>
+            <xml-root-element name="update"/>
+            <java-attributes>
+                <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.onap.org.v1.UpdateNodeKey"/>
+                <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.onap.org.v1.Action"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Action">
+            <xml-root-element name="action"/>
+            <java-attributes>
+                <xml-element java-attribute="actionType" name="action-type" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.onap.org.v1.ActionData"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ActionData">
+            <xml-root-element name="action-data"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="UpdateNodeKey">
+            <xml-root-element name="update-node-key"/>
+            <java-attributes>
+                <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+                <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Notify">
+            <xml-root-element name="notify"/>
+            <java-attributes>
+                <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String"/>
+                <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.onap.org.v1.KeyData"/>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="KeyData">
+            <xml-root-element name="key-data"/>
+            <java-attributes>
+                <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+                <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudInfrastructure">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for cloud infrastructure."/>
+            </xml-properties>
+            <xml-root-element name="cloud-infrastructure"/>
+            <java-attributes>
+                <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.onap.org.v1.Complexes"/>
+                <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.onap.org.v1.CloudRegions"/>
+                <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.onap.org.v1.NetworkProfiles"/>
+                <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.onap.org.v1.Pservers"/>
+                <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.onap.org.v1.VirtualDataCenters"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudRegions">
+            <xml-root-element name="cloud-regions"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.onap.org.v1.CloudRegion"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudRegion">
+            <xml-root-element name="cloud-region"/>
+            <java-attributes>
+                <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Identifies the vendor and cloud name, e.g., att-aic. First part of composite key should be formatted as vendor-cloudname"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the cloud (e.g., openstack)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Cloud-owner defined type indicator (e.g., DCP, LCP)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Software version employed at the site"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL of the keystone identity service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Zone where the cloud is homed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="complex name for cloud-region instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.onap.org.v1.VolumeGroups"/>
+                <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v1.Tenants"/>
+                <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v1.Flavors"/>
+                <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v1.Images"/>
+                <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v1.DvsSwitches"/>
+                <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v1.OamNetworks"/>
+                <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v1.AvailabilityZones"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&amp;Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&amp;T's AIC."/>
+                <xml-property name="indexedProps" value="identity-url,cloud-owner,cloud-region-id,cloud-type,owner-defined-type"/>
+                <xml-property name="nameProps" value="owner-defined-type"/>
+                <xml-property name="container" value="cloud-regions"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="VolumeGroups">
+            <xml-properties>
+                <xml-property name="description" value="Collection of persistent block-level storage."/>
+            </xml-properties>
+            <xml-root-element name="volume-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.onap.org.v1.VolumeGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VolumeGroup">
+            <xml-root-element name="volume-group"/>
+            <java-attributes>
+                <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of volume-group."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeGroupName" name="volume-group-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the volume group."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this volume-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this volume-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Persistent block-level storage."/>
+                <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="volume-groups"/>
+                <xml-property name="uriTemplate" value="/volume-groups/volume-group/{volume-group-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="RelationshipList">
+            <xml-root-element name="relationship-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.onap.org.v1.Relationship"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Relationship">
+            <xml-root-element name="relationship"/>
+            <java-attributes>
+                <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="A keyword provided by A&amp;AI to indicate type of node."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to the object in A&amp;AI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.onap.org.v1.RelationshipData"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.onap.org.v1.RelatedToProperty"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedToProperty">
+            <xml-root-element name="related-to-property"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Key part of a key/value pair"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Value part of a key/value pair"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelationshipData">
+            <xml-root-element name="relationship-data"/>
+            <java-attributes>
+                <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="A keyword provided by A&amp;AI to indicate an attribute."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Value of the attribute."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Complexes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+            </xml-properties>
+            <xml-root-element name="complexes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.onap.org.v1.Complex"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Complex">
+            <xml-root-element name="complex"/>
+            <java-attributes>
+                <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Data center code which can be an alternate way to identify a complex"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Gamma complex name for LCP instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL of the keystone identity service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type, e.g., central office, data center."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="street2" name="street2" type="java.lang.String"/>
+                <xml-element java-attribute="city" name="city" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="state" name="state" type="java.lang.String"/>
+                <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="country" name="country" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="region" name="region" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="latitude" name="latitude" type="java.lang.String"/>
+                <xml-element java-attribute="longitude" name="longitude" type="java.lang.String"/>
+                <xml-element java-attribute="elevation" name="elevation" type="java.lang.String"/>
+                <xml-element java-attribute="lata" name="lata" type="java.lang.String"/>
+                <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.onap.org.v1.CtagPools"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+                <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id"/>
+                <xml-property name="uniqueProps" value="physical-location-id"/>
+                <xml-property name="container" value="complexes"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/complexes/complex/{physical-location-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CtagPools">
+            <xml-root-element name="ctag-pools"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.onap.org.v1.CtagPool"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CtagPool">
+            <xml-root-element name="ctag-pool"/>
+            <java-attributes>
+                <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="The Target provider edge router"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the availability zone"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Describes what the intended purpose of this pool is."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Comma separated list of ctags"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose."/>
+                <xml-property name="indexedProps" value="availability-zone-name"/>
+                <xml-property name="dependentOn" value="complex"/>
+                <xml-property name="container" value="ctag-pools"/>
+                <xml-property name="uriTemplate" value="/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Tenants">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack tenants."/>
+            </xml-properties>
+            <xml-root-element name="tenants"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.onap.org.v1.Tenant"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Tenant">
+            <xml-root-element name="tenant"/>
+            <java-attributes>
+                <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id relative to the cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Readable name of tenant"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.onap.org.v1.Vservers"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack tenant"/>
+                <xml-property name="nameProps" value="tenant-name"/>
+                <xml-property name="indexedProps" value="tenant-name,tenant-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="tenants"/>
+                <xml-property name="uriTemplate" value="/tenants/tenant/{tenant-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vservers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs."/>
+            </xml-properties>
+            <xml-root-element name="vservers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.onap.org.v1.Vserver"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vserver">
+            <xml-root-element name="vserver"/>
+            <java-attributes>
+                <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier for this vserver relative to its tenant"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of vserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternative name of vserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.onap.org.v1.Volumes"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v1.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual Servers, aka virtual machine or VM."/>
+                <xml-property name="nameProps" value="vserver-name"/>
+                <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2"/>
+                <xml-property name="dependentOn" value="tenant"/>
+                <xml-property name="container" value="vservers"/>
+                <xml-property name="uriTemplate" value="/vservers/vserver/{vserver-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="LInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of logical interfaces."/>
+            </xml-properties>
+            <xml-root-element name="l-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.onap.org.v1.LInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LInterface">
+            <xml-root-element name="l-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name given to the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="MAC address for the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.onap.org.v1.Vlans"/>
+                <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.onap.org.v1.SriovVfs"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v1.L3InterfaceIpv4AddressList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v1.L3InterfaceIpv6AddressList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Logical interfaces, e.g., a vnic."/>
+                <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name"/>
+                <xml-property name="dependentOn" value="generic-vnf,newvce,p-interface,vserver,lag-interface,l-interface"/>
+                <xml-property name="container" value="l-interfaces"/>
+                <xml-property name="uriTemplate" value="/l-interfaces/l-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SriovVfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of SR-IOV Virtual Functions."/>
+            </xml-properties>
+            <xml-root-element name="sriov-vfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.onap.org.v1.SriovVf"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="SriovVf">
+            <xml-root-element name="sriov-vf"/>
+            <java-attributes>
+                <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="PCI ID used to identify the sriov-vf"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This option is used to set the link status.  Valid values as of 1607 are on, off, and auto."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)"/>
+                <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id"/>
+                <xml-property name="dependentOn" value="l-interface"/>
+                <xml-property name="container" value="sriov-vfs"/>
+                <xml-property name="uriTemplate" value="/sriov-vfs/sriov-vf/{pci-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3InterfaceIpv4AddressList">
+            <xml-root-element name="l3-interface-ipv4-address-list"/>
+            <java-attributes>
+                <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix length, 32 for single address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator of fixed or floating address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPv4 Address Range"/>
+                <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+                <xml-property name="dependentOn" value="vlan,l-interface"/>
+                <xml-property name="uriTemplate" value="/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vlans">
+            <xml-root-element name="vlans"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.onap.org.v1.Vlan"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vlan">
+            <xml-root-element name="vlan"/>
+            <java-attributes>
+                <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="String that identifies the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to describe (the service associated with) the vlan"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v1.L3InterfaceIpv4AddressList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v1.L3InterfaceIpv6AddressList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Definition of vlan"/>
+                <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner"/>
+                <xml-property name="dependentOn" value="l-interface"/>
+                <xml-property name="container" value="vlans"/>
+                <xml-property name="uriTemplate" value="/vlans/vlan/{vlan-interface}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3InterfaceIpv6AddressList">
+            <xml-root-element name="l3-interface-ipv6-address-list"/>
+            <java-attributes>
+                <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix length, 128 for single address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator of fixed or floating address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPv6 Address Range"/>
+                <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+                <xml-property name="dependentOn" value="vlan,l-interface"/>
+                <xml-property name="uriTemplate" value="/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Volumes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of ephemeral Block storage volumes."/>
+            </xml-properties>
+            <xml-root-element name="volumes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.onap.org.v1.Volume"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Volume">
+            <xml-root-element name="volume"/>
+            <java-attributes>
+                <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of block storage volume relative to the vserver."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Ephemeral Block storage volume."/>
+                <xml-property name="indexedProps" value="volume-id"/>
+                <xml-property name="dependentOn" value="vserver"/>
+                <xml-property name="container" value="volumes"/>
+                <xml-property name="uriTemplate" value="/volumes/volume/{volume-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Flavors">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack flavors."/>
+            </xml-properties>
+            <xml-root-element name="flavors"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.onap.org.v1.Flavor"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Flavor">
+            <xml-root-element name="flavor"/>
+            <java-attributes>
+                <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Flavor id, expected to be unique across cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Flavor name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Number of CPUs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Amount of memory"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Disk space"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Amount of ephemeral disk space"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="amount of swap space allocation"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack flavor."/>
+                <xml-property name="nameProps" value="flavor-name"/>
+                <xml-property name="indexedProps" value="flavor-name,flavor-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="flavors"/>
+                <xml-property name="uriTemplate" value="/flavors/flavor/{flavor-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Images">
+            <xml-properties>
+                <xml-property name="description" value="Collectio of Openstack images."/>
+            </xml-properties>
+            <xml-root-element name="images"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.onap.org.v1.Image"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Image">
+            <xml-root-element name="image"/>
+            <java-attributes>
+                <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Image id, expected to be unique across cloud region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Image name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Operating system architecture."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v1.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack image."/>
+                <xml-property name="nameProps" value="image-name"/>
+                <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="images"/>
+                <xml-property name="uriTemplate" value="/images/image/{image-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Metadata">
+            <xml-properties>
+                <xml-property name="description" value="Collection of metadatum (key/value pairs)"/>
+            </xml-properties>
+            <xml-root-element name="metadata"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.onap.org.v1.Metadatum"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Metadatum">
+            <xml-root-element name="metadatum"/>
+            <java-attributes>
+                <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Key/value pairs"/>
+                <xml-property name="indexedProps" value="metaname"/>
+                <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model"/>
+                <xml-property name="container" value="metadata"/>
+                <xml-property name="uriTemplate" value="/metadata/metadatum/{metaname}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="DvsSwitches">
+            <xml-properties>
+                <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and GenericVnfs."/>
+            </xml-properties>
+            <xml-root-element name="dvs-switches"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.onap.org.v1.DvsSwitch"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="DvsSwitch">
+            <xml-root-element name="dvs-switch"/>
+            <java-attributes>
+                <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="DVS switch name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL used to reach the vcenter"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs.  A&amp;AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&amp;AI. "/>
+                <xml-property name="indexedProps" value="vcenter-url,switch-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="dvs-switches"/>
+                <xml-property name="uriTemplate" value="/dvs-switches/dvs-switch/{switch-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="NetworkProfiles">
+            <xml-properties>
+                <xml-property name="description" value="Collection of network profiles"/>
+            </xml-properties>
+            <xml-root-element name="network-profiles"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.onap.org.v1.NetworkProfile"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NetworkProfile">
+            <xml-root-element name="network-profile"/>
+            <java-attributes>
+                <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique name of network profile."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="communityString" name="community-string" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encrypted SNMP community string"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Network profile populated by SDN-GP for SNMP"/>
+                <xml-property name="indexedProps" value="nm-profile-name"/>
+                <xml-property name="container" value="network-profiles"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/network-profiles/network-profile/{nm-profile-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pservers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of compute hosts."/>
+            </xml-properties>
+            <xml-root-element name="pservers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.onap.org.v1.Pserver"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Pserver">
+            <xml-root-element name="pserver"/>
+            <java-attributes>
+                <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Value from executing hostname on the compute node."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="PTNII name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Number of cpus"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Disk size, in GBs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="RAM size, in MBs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Fully-qualified domain name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Serial number, may be queried"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of Pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="internet topology of Pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="alternative pserver name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="purpose" name="purpose" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="purpose of pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v1.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v1.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver."/>
+                <xml-property name="nameProps" value="pserver-name2"/>
+                <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2"/>
+                <xml-property name="uniqueProps" value="hostname"/>
+                <xml-property name="container" value="pservers"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/pservers/pserver/{hostname}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical interfaces."/>
+            </xml-properties>
+            <xml-root-element name="p-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.onap.org.v1.PInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PInterface">
+            <xml-root-element name="p-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name that identifies the physical interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Nature of the services and connectivity on this port."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v1.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Physical interface (e.g., nic)"/>
+                <xml-property name="indexedProps" value="interface-name"/>
+                <xml-property name="dependentOn" value="vpls-pe,pserver,pnf"/>
+                <xml-property name="container" value="p-interfaces"/>
+                <xml-property name="uriTemplate" value="/p-interfaces/p-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="LagInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of link aggregate interfaces."/>
+            </xml-properties>
+            <xml-root-element name="lag-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.onap.org.v1.LagInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LagInterface">
+            <xml-root-element name="lag-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name that identifies the link aggregate interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v1.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Link aggregate interface"/>
+                <xml-property name="indexedProps" value="interface-name"/>
+                <xml-property name="dependentOn" value="generic-vnf,pserver,vpls-pe"/>
+                <xml-property name="container" value="lag-interfaces"/>
+                <xml-property name="uriTemplate" value="/lag-interfaces/lag-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="OamNetworks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly.  Do not use for new purposes. "/>
+            </xml-properties>
+            <xml-root-element name="oam-networks"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.onap.org.v1.OamNetwork"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="OamNetwork">
+            <xml-root-element name="oam-network"/>
+            <java-attributes>
+                <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the network. Unique across a cloud-region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="cvlan-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="OAM network, to be deprecated shortly.  Do not use for new purposes. "/>
+                <xml-property name="nameProps" value="network-name"/>
+                <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="oam-networks"/>
+                <xml-property name="uriTemplate" value="/oam-networks/oam-network/{network-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="AvailabilityZones">
+            <xml-properties>
+                <xml-property name="description" value="Collection of availability zones"/>
+            </xml-properties>
+            <xml-root-element name="availability-zones"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v1.AvailabilityZone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AvailabilityZone">
+            <xml-root-element name="availability-zone"/>
+            <java-attributes>
+                <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the availability zone.  Unique across a cloud region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of hypervisor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="State that indicates whether the availability zone should be used, etc.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers"/>
+                <xml-property name="indexedProps" value="availability-zone-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="availability-zones"/>
+                <xml-property name="uriTemplate" value="/availability-zones/availability-zone/{availability-zone-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VirtualDataCenters">
+            <xml-properties>
+                <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+            </xml-properties>
+            <xml-root-element name="virtual-data-centers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.onap.org.v1.VirtualDataCenter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VirtualDataCenter">
+            <xml-root-element name="virtual-data-center"/>
+            <java-attributes>
+                <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of the vdc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the virtual data center"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+                <xml-property name="nameProps" value="vdc-name"/>
+                <xml-property name="indexedProps" value="vdc-name,vdc-id"/>
+                <xml-property name="container" value="virtual-data-centers"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Business">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for business related constructs"/>
+            </xml-properties>
+            <xml-root-element name="business"/>
+            <java-attributes>
+                <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.onap.org.v1.Connectors"/>
+                <xml-element java-attribute="customers" name="customers" type="inventory.aai.onap.org.v1.Customers"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Connectors">
+            <xml-properties>
+                <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+            </xml-properties>
+            <xml-root-element name="connectors"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.onap.org.v1.Connector"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Connector">
+            <xml-root-element name="connector"/>
+            <java-attributes>
+                <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of resource instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v1.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+                <xml-property name="indexedProps" value="resource-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="container" value="connectors"/>
+                <xml-property name="namespace" value="business"/>
+                <xml-property name="uriTemplate" value="/business/connectors/connector/{resource-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Customers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information."/>
+            </xml-properties>
+            <xml-root-element name="customers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.onap.org.v1.Customer"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Customer">
+            <xml-root-element name="customer"/>
+            <java-attributes>
+                <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.onap.org.v1.ServiceSubscriptions"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="customer identifiers to provide linkage back to BSS information."/>
+                <xml-property name="nameProps" value="subscriber-name"/>
+                <xml-property name="indexedProps" value="subscriber-name,global-customer-id"/>
+                <xml-property name="uniqueProps" value="global-customer-id"/>
+                <xml-property name="container" value="customers"/>
+                <xml-property name="namespace" value="business"/>
+                <xml-property name="uriTemplate" value="/business/customers/customer/{global-customer-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceSubscriptions">
+            <xml-properties>
+                <xml-property name="description" value="Collection of objects that group service instances."/>
+            </xml-properties>
+            <xml-root-element name="service-subscriptions"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.onap.org.v1.ServiceSubscription"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceSubscription">
+            <xml-root-element name="service-subscription"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.onap.org.v1.ServiceInstances">
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Object that group service instances."/>
+                <xml-property name="indexedProps" value="service-type"/>
+                <xml-property name="dependentOn" value="customer"/>
+                <xml-property name="container" value="service-subscriptions"/>
+                <xml-property name="uriTemplate" value="/service-subscriptions/service-subscription/{service-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceInstances">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service instances"/>
+            </xml-properties>
+            <xml-root-element name="service-instances"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.onap.org.v1.ServiceInstance"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceInstance">
+            <xml-root-element name="service-instance"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Uniquely identifies this instance of a service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v1.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Instance of a service"/>
+                <xml-property name="indexedProps" value="service-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="uniqueProps" value="service-instance-id"/>
+                <xml-property name="dependentOn" value="service-subscription"/>
+                <xml-property name="container" value="service-instances"/>
+                <xml-property name="uriTemplate" value="/service-instances/service-instance/{service-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceDesignAndCreation">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for objects managed by ASDC"/>
+            </xml-properties>
+            <xml-root-element name="service-design-and-creation"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.onap.org.v1.VnfImages"/>
+                <xml-element java-attribute="services" name="services" type="inventory.aai.onap.org.v1.Services"/>
+                <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.onap.org.v1.ServiceCapabilities"/>
+                <xml-element java-attribute="models" name="models" type="inventory.aai.onap.org.v1.Models"/>
+                <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.onap.org.v1.NamedQueries"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VnfImages">
+            <xml-properties>
+                <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+            </xml-properties>
+            <xml-root-element name="vnf-images"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.onap.org.v1.VnfImage"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VnfImage">
+            <xml-root-element name="vnf-image"/>
+            <java-attributes>
+                <xml-element java-attribute="attUuid" name="att-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of this asset"/>
+                        <xml-property name="dbAlias" value="vnf-image-uuid"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+                <xml-property name="indexedProps" value="application,att-uuid,application-vendor,application-version"/>
+                <xml-property name="uniqueProps" value="att-uuid"/>
+                <xml-property name="container" value="vnf-images"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/vnf-images/vnf-image/{att-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Services">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service model definitions.  Likely to be deprecated in favor of models from ASDC."/>
+            </xml-properties>
+            <xml-root-element name="services"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.onap.org.v1.Service"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Service">
+            <xml-root-element name="service"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description of the service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="service version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Stand-in for service model definitions.  Likely to be deprecated in favor of models from ASDC."/>
+                <xml-property name="indexedProps" value="service-description,service-id"/>
+                <xml-property name="container" value="services"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/services/service/{service-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceCapabilities">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service capabilities."/>
+            </xml-properties>
+            <xml-root-element name="service-capabilities"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.onap.org.v1.ServiceCapability"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceCapability">
+            <xml-root-element name="service-capability"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models.  No new use should be made of this."/>
+                <xml-property name="indexedProps" value="service-type,vnf-type"/>
+                <xml-property name="container" value="service-capabilities"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/service-capabilities/service-capability/{service-type}/{vnf-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Network">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for network inventory resources."/>
+            </xml-properties>
+            <xml-root-element name="network"/>
+            <java-attributes>
+                <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.onap.org.v1.LogicalLinks"/>
+                <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.onap.org.v1.SitePairSets"/>
+                <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.onap.org.v1.VpnBindings"/>
+                <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.onap.org.v1.VplsPes"/>
+                <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.onap.org.v1.MulticastConfigurations"/>
+                <xml-element java-attribute="vces" name="vces" type="inventory.aai.onap.org.v1.Vces"/>
+                <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.onap.org.v1.Vnfcs"/>
+                <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.onap.org.v1.L3Networks"/>
+                <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.onap.org.v1.NetworkPolicies"/>
+                <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.onap.org.v1.GenericVnfs"/>
+                <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.onap.org.v1.LagLinks"/>
+                <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.onap.org.v1.Newvces"/>
+                <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.onap.org.v1.Pnfs"/>
+                <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.onap.org.v1.PhysicalLinks"/>
+                <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.onap.org.v1.IpsecConfigurations"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LogicalLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of logical connections"/>
+            </xml-properties>
+            <xml-root-element name="logical-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.onap.org.v1.LogicalLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LogicalLink">
+            <xml-root-element name="logical-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of logical link, e.g., evc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4, v6, or ds for dual stack (should be att-ip-version)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="For example, static or BGP"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points"/>
+                <xml-property name="indexedProps" value="link-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="container" value="logical-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/logical-links/logical-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SitePairSets">
+            <xml-properties>
+                <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf"/>
+            </xml-properties>
+            <xml-root-element name="site-pair-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.onap.org.v1.SitePairSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SitePairSet">
+            <xml-root-element name="site-pair-set"/>
+            <java-attributes>
+                <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of site pair set."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.onap.org.v1.RoutingInstances"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Set of instances for probes used to measure service level agreements"/>
+                <xml-property name="indexedProps" value="site-pair-set-id"/>
+                <xml-property name="uniqueProps" value="site-pair-set-id"/>
+                <xml-property name="container" value="site-pair-sets"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/site-pair-sets/site-pair-set/{site-pair-set-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="RoutingInstances">
+            <xml-properties>
+                <xml-property name="description" value="set of probes related to generic-vnf routing instance"/>
+            </xml-properties>
+            <xml-root-element name="routing-instances"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.onap.org.v1.RoutingInstance"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RoutingInstance">
+            <xml-root-element name="routing-instance"/>
+            <java-attributes>
+                <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of routing instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="rpm owner"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.onap.org.v1.SitePairs"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="routing-instance-id"/>
+                <xml-property name="uniqueProps" value="routing-instance-id"/>
+                <xml-property name="dependentOn" value="site-pair-set"/>
+                <xml-property name="container" value="routing-instances"/>
+                <xml-property name="uriTemplate" value="/routing-instances/routing-instance/{routing-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SitePairs">
+            <xml-properties>
+                <xml-property name="description" value="probe within a set"/>
+            </xml-properties>
+            <xml-root-element name="site-pairs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.onap.org.v1.SitePair"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SitePair">
+            <xml-root-element name="site-pair"/>
+            <java-attributes>
+                <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ip version, v4, v6"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.onap.org.v1.ClassesOfService"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vpn-id,site-pair-id"/>
+                <xml-property name="uniqueProps" value="site-pair-id"/>
+                <xml-property name="dependentOn" value="routing-instance"/>
+                <xml-property name="container" value="site-pairs"/>
+                <xml-property name="uriTemplate" value="/site-pairs/site-pair/{site-pair-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ClassesOfService">
+            <xml-properties>
+                <xml-property name="description" value="class-of-service of probe"/>
+            </xml-properties>
+            <xml-root-element name="classes-of-service"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.onap.org.v1.ClassOfService"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ClassOfService">
+            <xml-root-element name="class-of-service"/>
+            <java-attributes>
+                <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="type of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="cos"/>
+                <xml-property name="dependentOn" value="site-pair"/>
+                <xml-property name="container" value="classes-of-service"/>
+                <xml-property name="uriTemplate" value="/classes-of-service/class-of-service/{cos}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VpnBindings">
+            <xml-root-element name="vpn-bindings"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.onap.org.v1.VpnBinding"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VpnBinding">
+            <xml-root-element name="vpn-binding"/>
+            <java-attributes>
+                <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="VPN ID, globally unique within A&amp;AI"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="VPN Name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Number used to identify a VPN, globally unique in the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList">
+                    <xml-properties>
+                        <xml-property name="description" value="l3-networks relate to vpn-bindings"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="VPN binding"/>
+                <xml-property name="nameProps" value="vpn-name"/>
+                <xml-property name="indexedProps" value="vpn-name,vpn-id,global-route-target"/>
+                <xml-property name="uniqueProps" value="vpn-id"/>
+                <xml-property name="container" value="vpn-bindings"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vpn-bindings/vpn-binding/{vpn-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VplsPes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of VPLS Provider Edge routers"/>
+            </xml-properties>
+            <xml-root-element name="vpls-pes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.onap.org.v1.VplsPe"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VplsPe">
+            <xml-root-element name="vpls-pe"/>
+            <java-attributes>
+                <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Temporary location for stag to get to VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v1.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v1.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="VPLS Provider Edge routers."/>
+                <xml-property name="indexedProps" value="prov-status,equipment-name"/>
+                <xml-property name="container" value="vpls-pes"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vpls-pes/vpls-pe/{equipment-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="MulticastConfigurations">
+            <xml-properties>
+                <xml-property name="description" value="multicast configuration of generic-vnf ip-address"/>
+            </xml-properties>
+            <xml-root-element name="multicast-configurations"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.onap.org.v1.MulticastConfiguration"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="MulticastConfiguration">
+            <xml-root-element name="multicast-configuration"/>
+            <java-attributes>
+                <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of multicast configuration."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="protocol of multicast configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="rp type of multicast configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="multicast-configuration-id"/>
+                <xml-property name="uniqueProps" value="multicast-configuration-id"/>
+                <xml-property name="container" value="multicast-configurations"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/multicast-configurations/multicast-configuration/{multicast-configuration-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma.  This object is deprecated."/>
+            </xml-properties>
+            <xml-root-element name="vces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.onap.org.v1.Vce"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vce">
+            <xml-root-element name="vce"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC.  Expect this to change as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="License key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network role being played by this VNF"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of VPE connected to this VCE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router.  Implied length of /64."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.onap.org.v1.PortGroups"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma.  This object is deprecated."/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="container" value="vces"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="extends" value="vnf"/>
+                <xml-property name="uriTemplate" value="/network/vces/vce/{vnf-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PortGroups">
+            <xml-root-element name="port-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.onap.org.v1.PortGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PortGroup">
+            <xml-root-element name="port-group"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network name of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID for port group in vmware"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Likely to duplicate value of neutron network name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.onap.org.v1.CvlanTags"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Used to capture the network interfaces of this VCE"/>
+                <xml-property name="nameProps" value="port-group-name"/>
+                <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name"/>
+                <xml-property name="dependentOn" value="vce"/>
+                <xml-property name="container" value="port-groups"/>
+                <xml-property name="uriTemplate" value="/port-groups/port-group/{interface-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CvlanTags">
+            <xml-root-element name="cvlan-tags"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.onap.org.v1.CvlanTagEntry"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CvlanTagEntry">
+            <xml-root-element name="cvlan-tag-entry"/>
+            <java-attributes>
+                <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="See mis-na-virtualization-platform.yang"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="dependentOn" value="port-group"/>
+                <xml-property name="indexedProps" value="cvlan-tag"/>
+                <xml-property name="container" value="cvlan-tags"/>
+                <xml-property name="uriTemplate" value="/cvlan-tags/cvlan-tag/{cvlan-tag-cvlan-tag}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="Vnfcs">
+            <xml-properties>
+                <xml-property name="description" value="virtual network components associated with a vserver from application controller."/>
+            </xml-properties>
+            <xml-root-element name="vnfcs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.onap.org.v1.Vnfc"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vnfc">
+            <xml-root-element name="vnfc"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of vnfc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="function code"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="type"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="prov status of this vnfc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Oam V4 vip address of this vnfc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled"/>
+                <xml-property name="container" value="vnfcs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vnfcs/vnfc/{vnfc-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3Networks">
+            <xml-root-element name="l3-networks"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.onap.org.v1.L3Network"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="L3Network">
+            <xml-root-element name="l3-network"/>
+            <java-attributes>
+                <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Network ID, should be uuid. Unique across A&amp;AI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network, governed by some naming convention.."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkType" name="network-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the network - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role the network plans - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network technology - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isBoundToVpn" name="is-bound-to-vpn" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Set to true if bound to VPN"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="network role instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contrail FQDN for the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.onap.org.v1.Subnets"/>
+                <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.onap.org.v1.CtagAssignments"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList">
+                    <xml-properties>
+                        <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Generic network definition"/>
+                <xml-property name="nameProps" value="network-name"/>
+                <xml-property name="indexedProps" value="heat-stack-id,service-id,network-id,network-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-network-fqdn,neutron-network-id"/>
+                <xml-property name="uniqueProps" value="network-id"/>
+                <xml-property name="container" value="l3-networks"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/l3-networks/l3-network/{network-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="NetworkPolicies">
+            <xml-root-element name="network-policies"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.onap.org.v1.NetworkPolicy"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="NetworkPolicy">
+            <xml-root-element name="network-policy"/>
+            <java-attributes>
+                <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID representing unique key to this instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contrail FQDN for the policy"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID for the openStack Heat instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="nameProps" value="network-policy-fqdn"/>
+                <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn"/>
+                <xml-property name="uniqueProps" value="network-policy-id"/>
+                <xml-property name="container" value="network-policies"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/network-policies/network-policy/{network-policy-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="CtagAssignments">
+            <xml-root-element name="ctag-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.onap.org.v1.CtagAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CtagAssignment">
+            <xml-root-element name="ctag-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="id."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vlan-id-inner"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="ctag-assignments"/>
+                <xml-property name="uriTemplate" value="/ctag-assignments/ctag-assignment/{vlan-id-inner}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Subnets">
+            <xml-root-element name="subnets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.onap.org.v1.Subnet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Subnet">
+            <xml-root-element name="subnet"/>
+            <java-attributes>
+                <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Subnet ID, should be UUID."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of this subnet"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="gateway ip address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="network start address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="cidr mask"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ip version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="dhcpEnabled" name="dhcp-enabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="dhcp enabled"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the start address reserved for use by dhcp"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the last address reserved for use by dhcp"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="subnet-id,neutron-subnet-id"/>
+                <xml-property name="uniqueProps" value="subnet-id"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="subnets"/>
+                <xml-property name="uriTemplate" value="/subnets/subnet/{subnet-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="GenericVnfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of VNFs"/>
+            </xml-properties>
+            <xml-root-element name="generic-vnfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.onap.org.v1.GenericVnf"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="GenericVnf">
+            <xml-root-element name="generic-vnf"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="License key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, used by MSO."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of managed by ATT or customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 Loopback address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 management address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="details regarding the generic-vnf operation"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates whether generic-vnf access uses SSH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="entitlementAssignmentGroupUuid" name="entitlement-assignment-group-uuid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the Entitlement group used for licensing VNFs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the specific entitlement resource"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseAssignmentGroupUuid" name="license-assignment-group-uuid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the license assignment group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKeyUuid" name="license-key-uuid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the actual license resource"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v1.LInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v1.LagInterfaces"/>
+                <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.onap.org.v1.VfModules"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="General purpose VNF"/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="container" value="generic-vnfs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="extends" value="vnf"/>
+                <xml-property name="uriTemplate" value="/network/generic-vnfs/generic-vnf/{vnf-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VfModules">
+            <xml-properties>
+                <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs"/>
+            </xml-properties>
+            <xml-root-element name="vf-modules"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.onap.org.v1.VfModule"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VfModule">
+            <xml-root-element name="vf-module"/>
+            <java-attributes>
+                <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of vf-module."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of vf-module"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isBaseVfModule" name="is-base-vf-module" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is base vf module"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the Contrail unique ID for a service-instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="a deployment unit of VNFCs"/>
+                <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-service-instance-fqdn"/>
+                <xml-property name="dependentOn" value="generic-vnf"/>
+                <xml-property name="container" value="vf-modules"/>
+                <xml-property name="uriTemplate" value="/vf-modules/vf-module/{vf-module-id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="LagLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of link aggregation connections"/>
+            </xml-properties>
+            <xml-root-element name="lag-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.onap.org.v1.LagLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LagLink">
+            <xml-root-element name="lag-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Alphabetical concatenation of lag-interface names"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="LAG links can connect lag-interfaces"/>
+                <xml-property name="indexedProps" value="link-name"/>
+                <xml-property name="container" value="lag-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/lag-links/lag-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Newvces">
+            <xml-properties>
+                <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+            </xml-properties>
+            <xml-root-element name="newvces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.onap.org.v1.Newvce"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Newvce">
+            <xml-root-element name="newvce"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="License key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v1.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2"/>
+                <xml-property name="uniqueProps" value="vnf-id2"/>
+                <xml-property name="container" value="newvces"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/newvces/newvce/{vnf-id2}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pnfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Physical Network Functions."/>
+            </xml-properties>
+            <xml-root-element name="pnfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.onap.org.v1.Pnf"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Pnf">
+            <xml-root-element name="pnf"/>
+            <java-attributes>
+                <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique name of Physical Network Function."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="name of Physical Network Function."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="source of name2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="id of pnf"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of managed by ATT or customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v1.PInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE."/>
+                <xml-property name="indexedProps" value="pnf-name"/>
+                <xml-property name="nameProps" value="pnf-name"/>
+                <xml-property name="uniqueProps" value="pnf-name"/>
+                <xml-property name="container" value="pnfs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/pnfs/pnf/{pnf-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PhysicalLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+            </xml-properties>
+            <xml-root-element name="physical-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.onap.org.v1.PhysicalLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PhysicalLink">
+            <xml-root-element name="physical-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Circuit it"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Dual access mode (e.g., primary, secondary"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+                <xml-property name="indexedProps" value="circuit-id,link-name"/>
+                <xml-property name="alternateKeys1" value="circuit-id"/>
+                <xml-property name="container" value="physical-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/physical-links/physical-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VigServers">
+            <xml-root-element name="vig-servers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.onap.org.v1.VigServer"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VigServer">
+            <xml-root-element name="vig-server"/>
+            <java-attributes>
+                <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 IP of the vig server"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 IP of the vig server"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607"/>
+                <xml-property name="indexedProps" value="vig-address-type"/>
+                <xml-property name="dependentOn" value="ipsec-configuration"/>
+                <xml-property name="container" value="vig-servers"/>
+                <xml-property name="uriTemplate" value="/vig-servers/vig-server/{vig-address-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="IpsecConfigurations">
+            <xml-root-element name="ipsec-configurations"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.onap.org.v1.IpsecConfiguration"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="IpsecConfiguration">
+            <xml-root-element name="ipsec-configuration"/>
+            <java-attributes>
+                <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of this configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ATT can offer a shared DMZ or a DMZ specific to a customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network address of shared DMZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="can be 1 or 2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="pre-shared key for the above group name "/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Lifetime for IKEv1 SA"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="md5, sha1, sha256, sha384"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Life time for IPSec SA"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="enable PFS or not"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="user ID for xAuth, sm-user,ucpeHostName,nmteHostName"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The time between DPD probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+                <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.onap.org.v1.VigServers"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C"/>
+                <xml-property name="indexedProps" value="ipsec-configuration-id"/>
+                <xml-property name="nameProps" value="ipsec-configuration-id"/>
+                <xml-property name="uniqueProps" value="ipsec-configuration-id"/>
+                <xml-property name="container" value="ipsec-configurations"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="NotificationEvent">
+            <xml-root-element name="notification-event"/>
+            <java-attributes>
+                <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String"/>
+                <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.onap.org.v1.NotificationEventHeader"/>
+                <xml-any-element java-attribute="entity"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="NotificationEventHeader">
+            <xml-root-element name="notification-event-header"/>
+            <java-attributes>
+                <xml-element java-attribute="id" name="id" type="java.lang.String"/>
+                <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String"/>
+                <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String"/>
+                <xml-element java-attribute="domain" name="domain" type="java.lang.String"/>
+                <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String"/>
+                <xml-element java-attribute="severity" name="severity" type="java.lang.String"/>
+                <xml-element java-attribute="eventType" name="event-type" type="java.lang.String"/>
+                <xml-element java-attribute="version" name="version" type="java.lang.String"/>
+                <xml-element java-attribute="action" name="action" type="java.lang.String"/>
+                <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String"/>
+                <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String"/>
+                <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String"/>
+                <xml-element java-attribute="status" name="status" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="AaiInternal">
+            <xml-root-element name="aai-internal"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.onap.org.v1.ReservedPropNames"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.onap.org.v1.EdgePropNames"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="ReservedPropNames">
+            <xml-properties>
+                <xml-property name="description" value="Internal map to define some reserved properties of a vertex"/>
+                <xml-property name="uniqueProps" value="aai-unique-key"/>
+                <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri"/>
+            </xml-properties>
+            <xml-root-element name="reserved-prop-names"/>
+            <java-attributes>
+                <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String"/>
+                <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String"/>
+                <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long"/>
+                <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String"/>
+                <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long"/>
+                <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String"/>
+                <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="EdgePropNames">
+            <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now -->
+            <xml-properties>
+                <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules"/>
+                <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV"/>
+            </xml-properties>
+            <xml-root-element name="edge-prop-names"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String"/>
+                <xml-element java-attribute="direction" name="direction" type="java.lang.String"/>
+                <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String"/>
+                <xml-element java-attribute="containsOtherV" name="contains-other-v" type="java.lang.String"/>
+                <xml-element java-attribute="deleteOtherV" name="delete-other-v" type="java.lang.String"/>
+                <xml-element java-attribute="svcinfra" name="SVC-INFRA" type="java.lang.String"/>
+                <xml-element java-attribute="preventDelete" name="prevent-delete" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Models">
+            <xml-properties>
+                <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models"/>
+            </xml-properties>
+            <xml-root-element name="models"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.onap.org.v1.Model"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Model">
+            <xml-properties>
+                <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models"/>
+                <xml-property name="nameProps" value="model-name,model-type"/>
+                <xml-property name="indexedProps" value="model-name-version-id,model-type,model-name,model-id,model-version"/>
+                <xml-property name="alternateKeys1" value="model-id,model-version"/>
+                <xml-property name="uniqueProps" value="model-name-version-id"/>
+                <xml-property name="container" value="models"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/models/model/{model-name-version-id}"/>
+            </xml-properties>
+            <xml-root-element name="model"/>
+            <java-attributes>
+                <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the model, which can change from version to version."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Invariant unique ID which does not change from version to version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v1.ModelElements"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v1.Metadata"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelElements">
+            <xml-root-element name="model-elements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.onap.org.v1.ModelElement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelElement">
+            <xml-properties>
+                <xml-property name="description" value="Defines how other models combine to make up a higher-level model."/>
+                <xml-property name="uniqueProps" value="model-element-uuid"/>
+                <xml-property name="indexedProps" value="model-element-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="model-elements"/>
+                <xml-property name="uriTemplate" value="/model-elements/model-element/{model-element-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="model-element"/>
+            <java-attributes>
+                <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="How many of this type of element are required/allowed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String">
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v1.ModelElements">
+                    <xml-properties>
+                        <xml-property name="description" value="Defines how other models combine to make up a higher-level model"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.onap.org.v1.ModelConstraints">
+                    <xml-properties>
+                        <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelConstraints">
+            <xml-root-element name="model-constraints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.onap.org.v1.ModelConstraint"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelConstraint">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="model-constraint-uuid"/>
+                <xml-property name="indexedProps" value="model-constraint-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="model-constraints"/>
+                <xml-property name="uriTemplate" value="/model-constraints/model-constraint/{model-constraint-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="model-constraint"/>
+            <java-attributes>
+                <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.onap.org.v1.ConstrainedElementSets"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ConstrainedElementSets">
+            <xml-root-element name="constrained-element-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.onap.org.v1.ConstrainedElementSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ConstrainedElementSet">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="constrained-element-set-uuid"/>
+                <xml-property name="indexedProps" value="constrained-element-set-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="constrained-element-sets"/>
+                <xml-property name="uriTemplate" value="/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="constrained-element-set"/>
+            <java-attributes>
+                <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.onap.org.v1.ElementChoiceSets"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ElementChoiceSets">
+            <xml-root-element name="element-choice-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.onap.org.v1.ElementChoiceSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ElementChoiceSet">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="element-choice-set-uuid"/>
+                <xml-property name="indexedProps" value="element-choice-set-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="element-choice-sets"/>
+                <xml-property name="uriTemplate" value="/element-choice-sets/element-choice-set/{element-choice-set-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="element-choice-set"/>
+            <java-attributes>
+                <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v1.ModelElements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueries">
+            <xml-root-element name="named-queries"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v1.NamedQuery"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQuery">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="nameProps" value="named-query-name"/>
+                <xml-property name="uniqueProps" value="named-query-uuid"/>
+                <xml-property name="indexedProps" value="named-query-uuid,named-query-name"/>
+                <xml-property name="container" value="named-queries"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/named-queries/named-query/{named-query-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="named-query"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String">
+                    <xml-element-wrapper name="required-input-params"/>
+                </xml-element>
+                <xml-element java-attribute="description" name="description" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v1.NamedQueryElements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueryElements">
+            <xml-root-element name="named-query-elements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.onap.org.v1.NamedQueryElement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueryElement">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="named-query-element-uuid"/>
+                <xml-property name="indexedProps" value="named-query-element-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="named-query-elements"/>
+                <xml-property name="uriTemplate" value="/named-query-elements/named-query-element/{named-query-element-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="named-query-element"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v1.NamedQueryElements"/>
+                <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.onap.org.v1.RelatedLookups"/>
+                <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.onap.org.v1.PropertyConstraints"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedLookups">
+            <xml-root-element name="related-lookups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.onap.org.v1.RelatedLookup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedLookup">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="related-lookup-uuid"/>
+                <xml-property name="indexedProps" value="related-lookup-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="related-lookups"/>
+                <xml-property name="uriTemplate" value="/related-lookups/related-lookup/{related-lookup-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="related-lookup"/>
+            <java-attributes>
+                <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v1.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PropertyConstraints">
+            <xml-root-element name="property-constraints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.onap.org.v1.PropertyConstraint"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PropertyConstraint">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="property-constraint-uuid"/>
+                <xml-property name="indexedProps" value="property-constraint-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="property-constraints"/>
+                <xml-property name="uriTemplate" value="/property-constraints/property-constraint/{property-constraint-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="property-constraint"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="property-name" name="property-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="property-value" name="property-value" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelAndNamedQuerySearch">
+            <xml-properties>
+                <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="model-and-named-query-search"/>
+            <java-attributes>
+                <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.onap.org.v1.QueryParameters"/>
+                <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.onap.org.v1.InstanceFilters"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="QueryParameters">
+            <xml-properties>
+                <xml-property name="description" value="QueryParameters for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="query-parameters"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v1.NamedQuery"/>
+                <xml-element java-attribute="model" name="model" type="inventory.aai.onap.org.v1.Model"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceFilters">
+            <xml-properties>
+                <xml-property name="description" value="InstanceFilters for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="instance-filters"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.onap.org.v1.InstanceFilter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceFilter">
+            <xml-properties>
+                <xml-property name="description" value="InstanceFilter for performing a named-query or model query"/>
+                <xml-property name="container" value="instance-filters"/>
+            </xml-properties>
+            <xml-root-element name="instance-filter"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Properties">
+            <xml-properties>
+                <xml-property name="description" value="Property holder for query properties or instance properties"/>
+            </xml-properties>
+            <xml-root-element name="properties"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ResponseList">
+            <xml-properties>
+                <xml-property name="description" value="Response container for the results of a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="response-list"/>
+            <java-attributes>
+                <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v1.InventoryResponseItems"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryResponseItems">
+            <xml-properties>
+                <xml-property name="description" value="Container for inventory items in response list"/>
+                <xml-property name="container" value="response-list"/>
+            </xml-properties>
+            <xml-root-element name="inventory-response-items"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.onap.org.v1.InventoryResponseItem"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryResponseItem">
+            <xml-properties>
+                <xml-property name="description" value="Inventory item for response list"/>
+                <xml-property name="container" value="inventory-response-items"/>
+            </xml-properties>
+            <xml-root-element name="inventory-response-item"/>
+            <java-attributes>
+                <xml-element java-attribute="modelName" name="model-name" type="java.lang.String"/>
+                <xml-any-element java-attribute="item"/>
+                <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.onap.org.v1.ExtraProperties"/>
+                <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v1.InventoryResponseItems"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ExtraProperties">
+            <xml-properties>
+                <xml-property name="description" value="Extra properties for inventory item for response list"/>
+            </xml-properties>
+            <xml-root-element name="extra-properties"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.onap.org.v1.ExtraProperty"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ExtraProperty">
+            <xml-root-element name="extra-property"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-any-element java-attribute="propertyValue" lax="true" name="property-value"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="Vnf">
+            <xml-root-element name="vnf"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Abstract vnf class"/>
+                <xml-property name="indexedProps" value="vnf-id"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="inheritors" value="vce,generic-vnf"/>
+                <xml-property name="abstract" value="true"/>
+            </xml-properties>
+        </java-type>
+    </java-types>
+</xml-bindings>
\ No newline at end of file
diff --git a/aai-core/src/test/resources/oxm/dbalias_oxm_three.xml b/aai-core/src/test/resources/oxm/dbalias_oxm_three.xml
new file mode 100644 (file)
index 0000000..ec32bbc
--- /dev/null
@@ -0,0 +1,5398 @@
+<!--
+
+    ============LICENSE_START=======================================================
+    org.onap.aai
+    ================================================================================
+    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 is a trademark and service mark of AT&T Intellectual Property.
+  -->
+<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.onap.org.v3" xml-mapping-metadata-complete="true">
+    <xml-schema element-form-default="QUALIFIED">
+        <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v3"/>
+    </xml-schema>
+    <java-types>
+        <java-type name="Inventory">
+            <xml-root-element name="inventory"/>
+            <java-attributes>
+                <xml-element java-attribute="search" name="search" type="inventory.aai.onap.org.v3.Search"/>
+                <xml-element java-attribute="actions" name="actions" type="inventory.aai.onap.org.v3.Actions"/>
+                <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.onap.org.v3.CloudInfrastructure"/>
+                <xml-element java-attribute="business" name="business" type="inventory.aai.onap.org.v3.Business"/>
+                <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.onap.org.v3.ServiceDesignAndCreation"/>
+                <xml-element java-attribute="network" name="network" type="inventory.aai.onap.org.v3.Network"/>
+                <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.onap.org.v3.AaiInternal"/>
+                <xml-element java-attribute="nodes" name="nodes" type="inventory.aai.onap.org.v3.Nodes"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Nodes">
+            <xml-root-element name="nodes"/>
+        </java-type>
+        <java-type name="Search">
+            <xml-root-element name="search"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.onap.org.v3.EdgeTagQueryResult"/>
+                <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.onap.org.v3.EdgeTagQueryRequest"/>
+                <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.onap.org.v3.SearchResults"/>
+                <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.onap.org.v3.SdnZoneResponse"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="EdgeTagQueryResult">
+            <xml-root-element name="edge-tag-query-result"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v3.TaggedInventoryItemList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="TaggedInventoryItemList">
+            <xml-root-element name="tagged-inventory-item-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.onap.org.v3.InventoryItem"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryItem">
+            <xml-root-element name="inventory-item"/>
+            <java-attributes>
+                <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String"/>
+                <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.onap.org.v3.InventoryItemData"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v3.TaggedInventoryItemList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryItemData">
+            <xml-root-element name="inventory-item-data"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="EdgeTagQueryRequest">
+            <xml-root-element name="edge-tag-query-request"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String"/>
+                <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String"/>
+                <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.onap.org.v3.StartNodeFilter"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.onap.org.v3.IncludeNodeFilter"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.onap.org.v3.SecondaryFilter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="StartNodeFilter">
+            <xml-root-element name="start-node-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="IncludeNodeFilter">
+            <xml-root-element name="include-node-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SecondaryFilter">
+            <xml-root-element name="secondary-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SearchResults">
+            <xml-root-element name="search-results"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.onap.org.v3.ResultData"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ResultData">
+            <xml-root-element name="result-data"/>
+            <java-attributes>
+                <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The specific type of node in the A&amp;AI graph"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The URL to the specific resource"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SdnZoneResponse">
+            <xml-root-element name="sdn-zone-response"/>
+            <java-attributes>
+                <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v3.OamNetworks"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.onap.org.v3.AzAndDvsSwitches"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AzAndDvsSwitches">
+            <xml-root-element name="az-and-dvs-switches"/>
+            <java-attributes>
+                <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v3.DvsSwitches"/>
+                <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v3.AvailabilityZone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Actions">
+            <xml-properties>
+                <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)."/>
+            </xml-properties>
+            <xml-root-element name="actions"/>
+            <java-attributes>
+                <xml-element java-attribute="update" name="update" type="inventory.aai.onap.org.v3.Update"/>
+                <xml-element java-attribute="notify" name="notify" type="inventory.aai.onap.org.v3.Notify"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Update">
+            <xml-properties>
+                <xml-property name="description" value="Serves a PATCH like function.  Does not enforce concurrency control.  Clear each usage with AAI team."/>
+            </xml-properties>
+            <xml-root-element name="update"/>
+            <java-attributes>
+                <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.onap.org.v3.UpdateNodeKey"/>
+                <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.onap.org.v3.Action"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Action">
+            <xml-root-element name="action"/>
+            <java-attributes>
+                <xml-element java-attribute="actionType" name="action-type" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.onap.org.v3.ActionData"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ActionData">
+            <xml-root-element name="action-data"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="UpdateNodeKey">
+            <xml-root-element name="update-node-key"/>
+            <java-attributes>
+                <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+                <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Notify">
+            <xml-root-element name="notify"/>
+            <java-attributes>
+                <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String"/>
+                <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.onap.org.v3.KeyData"/>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="KeyData">
+            <xml-root-element name="key-data"/>
+            <java-attributes>
+                <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+                <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudInfrastructure">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for cloud infrastructure."/>
+            </xml-properties>
+            <xml-root-element name="cloud-infrastructure"/>
+            <java-attributes>
+                <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.onap.org.v3.Complexes"/>
+                <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.onap.org.v3.CloudRegions"/>
+                <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.onap.org.v3.NetworkProfiles"/>
+                <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.onap.org.v3.Pservers"/>
+                <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.onap.org.v3.VirtualDataCenters"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudRegions">
+            <xml-root-element name="cloud-regions"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.onap.org.v3.CloudRegion"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CloudRegion">
+            <xml-root-element name="cloud-region"/>
+            <java-attributes>
+                <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Identifies the vendor and cloud name, e.g., att-aic. First part of composite key should be formatted as vendor-cloudname"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the cloud (e.g., openstack)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Cloud-owner defined type indicator (e.g., dcp, lcp)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Software version employed at the site.  NOTE - THIS FIELD IS NOT KEPT UP TO DATE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL of the keystone identity service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Zone where the cloud is homed.  NOTE - THIS FIELD IS NOT CORRECTLY POPULATED."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="complex name for cloud-region instance.  NOTE - THIS FIELD IS NOT CORRECTLY POPULATED."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.onap.org.v3.VolumeGroups"/>
+                <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v3.Tenants"/>
+                <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v3.Flavors"/>
+                <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v3.GroupAssignments"/>
+                <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.onap.org.v3.Snapshots"/>
+                <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v3.Images"/>
+                <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v3.DvsSwitches"/>
+                <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v3.OamNetworks"/>
+                <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v3.AvailabilityZones"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&amp;Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&amp;T's AIC."/>
+                <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type"/>
+                <xml-property name="nameProps" value="owner-defined-type"/>
+                <xml-property name="container" value="cloud-regions"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="VolumeGroups">
+            <xml-properties>
+                <xml-property name="description" value="Collection of persistent block-level storage."/>
+            </xml-properties>
+            <xml-root-element name="volume-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.onap.org.v3.VolumeGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VolumeGroup">
+            <xml-root-element name="volume-group"/>
+            <java-attributes>
+                <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of volume-group."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeGroupName" name="volume-group-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the volume group."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this volume-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this volume-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                        <xml-property name="dbAlias" value="model-customization-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfModulePersonaModelCustomizationId" name="vf-module-persona-model-customization-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="helps relate the volume group to the vf-module whose components will require the volume group"/>
+                        <xml-property name="dbAlias" value="vf-module-model-customization-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Persistent block-level storage."/>
+                <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id"/>
+                <xml-property name="searchable" value="volume-group-id,volume-group-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="volume-groups"/>
+                <xml-property name="uriTemplate" value="/volume-groups/volume-group/{volume-group-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="RelationshipList">
+            <xml-root-element name="relationship-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.onap.org.v3.Relationship"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Relationship">
+            <xml-root-element name="relationship"/>
+            <java-attributes>
+                <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="A keyword provided by A&amp;AI to indicate type of node."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to the object in A&amp;AI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.onap.org.v3.RelationshipData"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.onap.org.v3.RelatedToProperty"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedToProperty">
+            <xml-root-element name="related-to-property"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Key part of a key/value pair"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Value part of a key/value pair"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelationshipData">
+            <xml-root-element name="relationship-data"/>
+            <java-attributes>
+                <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="A keyword provided by A&amp;AI to indicate an attribute."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Value of the attribute."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Complexes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+            </xml-properties>
+            <xml-root-element name="complexes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.onap.org.v3.Complex"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Complex">
+            <xml-root-element name="complex"/>
+            <java-attributes>
+                <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Data center code which can be an alternate way to identify a complex"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Gamma complex name for LCP instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL of the keystone identity service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type, e.g., central office, data center."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="street2" name="street2" type="java.lang.String"/>
+                <xml-element java-attribute="city" name="city" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="state" name="state" type="java.lang.String"/>
+                <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="country" name="country" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="region" name="region" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="latitude" name="latitude" type="java.lang.String"/>
+                <xml-element java-attribute="longitude" name="longitude" type="java.lang.String"/>
+                <xml-element java-attribute="elevation" name="elevation" type="java.lang.String"/>
+                <xml-element java-attribute="lata" name="lata" type="java.lang.String"/>
+                <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.onap.org.v3.CtagPools"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+                <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id"/>
+                <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code"/>
+                <xml-property name="uniqueProps" value="physical-location-id"/>
+                <xml-property name="container" value="complexes"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/complexes/complex/{physical-location-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CtagPools">
+            <xml-root-element name="ctag-pools"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.onap.org.v3.CtagPool"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CtagPool">
+            <xml-root-element name="ctag-pool"/>
+            <java-attributes>
+                <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="The Target provider edge router"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the availability zone"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Describes what the intended purpose of this pool is."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Comma separated list of ctags"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose."/>
+                <xml-property name="indexedProps" value="availability-zone-name"/>
+                <xml-property name="dependentOn" value="complex"/>
+                <xml-property name="container" value="ctag-pools"/>
+                <xml-property name="uriTemplate" value="/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Tenants">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack tenants."/>
+            </xml-properties>
+            <xml-root-element name="tenants"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.onap.org.v3.Tenant"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Tenant">
+            <xml-root-element name="tenant"/>
+            <java-attributes>
+                <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id relative to the cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Readable name of tenant"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.onap.org.v3.Vservers"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack tenant"/>
+                <xml-property name="nameProps" value="tenant-name"/>
+                <xml-property name="indexedProps" value="tenant-name,tenant-id"/>
+                <xml-property name="searchable" value="tenant-id,tenant-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="tenants"/>
+                <xml-property name="uriTemplate" value="/tenants/tenant/{tenant-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vservers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs."/>
+            </xml-properties>
+            <xml-root-element name="vservers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.onap.org.v3.Vserver"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vserver">
+            <xml-root-element name="vserver"/>
+            <java-attributes>
+                <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier for this vserver relative to its tenant"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of vserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternative name of vserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.onap.org.v3.Volumes"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v3.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual Servers, aka virtual machine or VM."/>
+                <xml-property name="nameProps" value="vserver-name"/>
+                <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2"/>
+                <xml-property name="searchable" value="vserver-id,vserver-name,vserver-name2"/>
+                <xml-property name="dependentOn" value="tenant"/>
+                <xml-property name="container" value="vservers"/>
+                <xml-property name="uriTemplate" value="/vservers/vserver/{vserver-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="LInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of logical interfaces."/>
+            </xml-properties>
+            <xml-root-element name="l-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.onap.org.v3.LInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LInterface">
+            <xml-root-element name="l-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name given to the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="MAC address for the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Whether A&amp;AI should be managing this interface of not. Could have value like CUSTOMER"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Human friendly text regarding this interface."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.onap.org.v3.Vlans"/>
+                <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.onap.org.v3.SriovVfs"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v3.L3InterfaceIpv4AddressList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v3.L3InterfaceIpv6AddressList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Logical interfaces, e.g., a vnic."/>
+                <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name"/>
+                <xml-property name="dependentOn" value="generic-vnf,newvce,p-interface,vserver,lag-interface,l-interface"/>
+                <xml-property name="container" value="l-interfaces"/>
+                <xml-property name="uriTemplate" value="/l-interfaces/l-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SriovVfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of SR-IOV Virtual Functions."/>
+            </xml-properties>
+            <xml-root-element name="sriov-vfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.onap.org.v3.SriovVf"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="SriovVf">
+            <xml-root-element name="sriov-vf"/>
+            <java-attributes>
+                <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="PCI ID used to identify the sriov-vf"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This option is used to set the link status.  Valid values as of 1607 are on, off, and auto."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)"/>
+                <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id"/>
+                <xml-property name="dependentOn" value="l-interface"/>
+                <xml-property name="container" value="sriov-vfs"/>
+                <xml-property name="uriTemplate" value="/sriov-vfs/sriov-vf/{pci-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3InterfaceIpv4AddressList">
+            <xml-root-element name="l3-interface-ipv4-address-list"/>
+            <java-attributes>
+                <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix length, 32 for single address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator of fixed or floating address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPv4 Address Range"/>
+                <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+                <xml-property name="dependentOn" value="vlan,l-interface"/>
+                <xml-property name="uriTemplate" value="/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vlans">
+            <xml-root-element name="vlans"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.onap.org.v3.Vlan"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vlan">
+            <xml-root-element name="vlan"/>
+            <java-attributes>
+                <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="String that identifies the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to describe (the service associated with) the vlan"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnKey" name="vpn-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v3.L3InterfaceIpv4AddressList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v3.L3InterfaceIpv6AddressList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Definition of vlan"/>
+                <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-key"/>
+                <xml-property name="dependentOn" value="l-interface"/>
+                <xml-property name="container" value="vlans"/>
+                <xml-property name="uriTemplate" value="/vlans/vlan/{vlan-interface}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3InterfaceIpv6AddressList">
+            <xml-root-element name="l3-interface-ipv6-address-list"/>
+            <java-attributes>
+                <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix length, 128 for single address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator of fixed or floating address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPv6 Address Range"/>
+                <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+                <xml-property name="dependentOn" value="vlan,l-interface"/>
+                <xml-property name="uriTemplate" value="/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Volumes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of ephemeral Block storage volumes."/>
+            </xml-properties>
+            <xml-root-element name="volumes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.onap.org.v3.Volume"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Volume">
+            <xml-root-element name="volume"/>
+            <java-attributes>
+                <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of block storage volume relative to the vserver."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Ephemeral Block storage volume."/>
+                <xml-property name="indexedProps" value="volume-id"/>
+                <xml-property name="dependentOn" value="vserver"/>
+                <xml-property name="container" value="volumes"/>
+                <xml-property name="uriTemplate" value="/volumes/volume/{volume-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Flavors">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack flavors."/>
+            </xml-properties>
+            <xml-root-element name="flavors"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.onap.org.v3.Flavor"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Flavor">
+            <xml-root-element name="flavor"/>
+            <java-attributes>
+                <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Flavor id, expected to be unique across cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Flavor name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Number of CPUs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Amount of memory"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Disk space"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Amount of ephemeral disk space"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="amount of swap space allocation"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack flavor."/>
+                <xml-property name="nameProps" value="flavor-name"/>
+                <xml-property name="indexedProps" value="flavor-name,flavor-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="flavors"/>
+                <xml-property name="uriTemplate" value="/flavors/flavor/{flavor-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Snapshots">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack snapshots"/>
+            </xml-properties>
+            <xml-root-element name="snapshots"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.onap.org.v3.Snapshot"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Snapshot">
+            <xml-root-element name="snapshot"/>
+            <java-attributes>
+                <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Snapshot name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Operating system architecture"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack snapshot"/>
+                <xml-property name="nameProps" value="snapshot-name"/>
+                <xml-property name="uniqueProps" value="snapshot-id"/>
+                <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="snapshots"/>
+                <xml-property name="uriTemplate" value="/snapshots/snapshot/{snapshot-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="GroupAssignments">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack group assignments"/>
+            </xml-properties>
+            <xml-root-element name="group-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.onap.org.v3.GroupAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="GroupAssignment">
+            <xml-root-element name="group-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Group id, expected to be unique across cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group type - the type of group this instance refers to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group name - name assigned to the group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group description - description of the group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)."/>
+                <xml-property name="nameProps" value="group-name"/>
+                <xml-property name="indexedProps" value="group-id,group-type,group-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="group-assignments"/>
+                <xml-property name="uriTemplate" value="/group-assignments/group-assignment/{group-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Images">
+            <xml-properties>
+                <xml-property name="description" value="Collectio of Openstack images."/>
+            </xml-properties>
+            <xml-root-element name="images"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.onap.org.v3.Image"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Image">
+            <xml-root-element name="image"/>
+            <java-attributes>
+                <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Image id, expected to be unique across cloud region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Image name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Operating system architecture."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v3.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack image."/>
+                <xml-property name="nameProps" value="image-name"/>
+                <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="images"/>
+                <xml-property name="uriTemplate" value="/images/image/{image-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Metadata">
+            <xml-properties>
+                <xml-property name="description" value="Collection of metadatum (key/value pairs)"/>
+            </xml-properties>
+            <xml-root-element name="metadata"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.onap.org.v3.Metadatum"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Metadatum">
+            <xml-root-element name="metadatum"/>
+            <java-attributes>
+                <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Key/value pairs"/>
+                <xml-property name="indexedProps" value="metaname"/>
+                <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model"/>
+                <xml-property name="container" value="metadata"/>
+                <xml-property name="uriTemplate" value="/metadata/metadatum/{metaname}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="DvsSwitches">
+            <xml-properties>
+                <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and GenericVnfs."/>
+            </xml-properties>
+            <xml-root-element name="dvs-switches"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.onap.org.v3.DvsSwitch"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="DvsSwitch">
+            <xml-root-element name="dvs-switch"/>
+            <java-attributes>
+                <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="DVS switch name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL used to reach the vcenter"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs.  A&amp;AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&amp;AI. "/>
+                <xml-property name="indexedProps" value="vcenter-url,switch-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="dvs-switches"/>
+                <xml-property name="uriTemplate" value="/dvs-switches/dvs-switch/{switch-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="NetworkProfiles">
+            <xml-properties>
+                <xml-property name="description" value="Collection of network profiles"/>
+            </xml-properties>
+            <xml-root-element name="network-profiles"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.onap.org.v3.NetworkProfile"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NetworkProfile">
+            <xml-root-element name="network-profile"/>
+            <java-attributes>
+                <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique name of network profile."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="communityString" name="community-string" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encrypted SNMP community string"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Network profile populated by SDN-GP for SNMP"/>
+                <xml-property name="indexedProps" value="nm-profile-name"/>
+                <xml-property name="container" value="network-profiles"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/network-profiles/network-profile/{nm-profile-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pservers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of compute hosts."/>
+            </xml-properties>
+            <xml-root-element name="pservers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.onap.org.v3.Pserver"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pserver">
+            <xml-root-element name="pserver"/>
+            <java-attributes>
+                <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Value from executing hostname on the compute node."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="PTNII name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Number of cpus"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Disk size, in GBs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="RAM size, in MBs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Fully-qualified domain name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Serial number, may be queried"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV4 Loopback 0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV6 Loopback 0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV4 AIM address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV6 AIM address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV6 OAM address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="CANOPI's inventory status.  Only set with values exactly as defined by CANOPI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of Pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="internet topology of Pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="alternative pserver name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="purpose" name="purpose" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="purpose of pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v3.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v3.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver."/>
+                <xml-property name="nameProps" value="pserver-name2"/>
+                <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2,inv-status"/>
+                <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address"/>
+                <xml-property name="uniqueProps" value="hostname"/>
+                <xml-property name="container" value="pservers"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/pservers/pserver/{hostname}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical interfaces."/>
+            </xml-properties>
+            <xml-root-element name="p-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.onap.org.v3.PInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PInterface">
+            <xml-root-element name="p-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name that identifies the physical interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Nature of the services and connectivity on this port."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="CLEI or other specification for p-interface hardware."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role specification for p-interface hardware."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates the physical properties of the interface."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v3.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Physical interface (e.g., nic)"/>
+                <xml-property name="indexedProps" value="interface-name,prov-status"/>
+                <xml-property name="nameProps" value="prov-status"/>
+                <xml-property name="dependentOn" value="vpls-pe,pserver,pnf"/>
+                <xml-property name="container" value="p-interfaces"/>
+                <xml-property name="uriTemplate" value="/p-interfaces/p-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="LagInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of link aggregate interfaces."/>
+            </xml-properties>
+            <xml-root-element name="lag-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.onap.org.v3.LagInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LagInterface">
+            <xml-root-element name="lag-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name that identifies the link aggregate interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Human friendly text regarding this interface."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v3.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Link aggregate interface"/>
+                <xml-property name="indexedProps" value="interface-name,interface-id,interface-role"/>
+                <xml-property name="dependentOn" value="generic-vnf,pserver,vpls-pe,pnf"/>
+                <xml-property name="container" value="lag-interfaces"/>
+                <xml-property name="uriTemplate" value="/lag-interfaces/lag-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="OamNetworks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly.  Do not use for new purposes. "/>
+            </xml-properties>
+            <xml-root-element name="oam-networks"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.onap.org.v3.OamNetwork"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="OamNetwork">
+            <xml-root-element name="oam-network"/>
+            <java-attributes>
+                <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the network. Unique across a cloud-region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="cvlan-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="OAM network, to be deprecated shortly.  Do not use for new purposes. "/>
+                <xml-property name="nameProps" value="network-name"/>
+                <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="oam-networks"/>
+                <xml-property name="uriTemplate" value="/oam-networks/oam-network/{network-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="AvailabilityZones">
+            <xml-properties>
+                <xml-property name="description" value="Collection of availability zones"/>
+            </xml-properties>
+            <xml-root-element name="availability-zones"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v3.AvailabilityZone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AvailabilityZone">
+            <xml-root-element name="availability-zone"/>
+            <java-attributes>
+                <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the availability zone.  Unique across a cloud region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of hypervisor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="State that indicates whether the availability zone should be used, etc.  Source of truth should define valid values."/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers"/>
+                <xml-property name="indexedProps" value="availability-zone-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="availability-zones"/>
+                <xml-property name="uriTemplate" value="/availability-zones/availability-zone/{availability-zone-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VirtualDataCenters">
+            <xml-properties>
+                <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+            </xml-properties>
+            <xml-root-element name="virtual-data-centers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.onap.org.v3.VirtualDataCenter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VirtualDataCenter">
+            <xml-root-element name="virtual-data-center"/>
+            <java-attributes>
+                <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of the vdc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the virtual data center"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+                <xml-property name="nameProps" value="vdc-name"/>
+                <xml-property name="indexedProps" value="vdc-name,vdc-id"/>
+                <xml-property name="container" value="virtual-data-centers"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Business">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for business related constructs"/>
+            </xml-properties>
+            <xml-root-element name="business"/>
+            <java-attributes>
+                <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.onap.org.v3.Connectors"/>
+                <xml-element java-attribute="customers" name="customers" type="inventory.aai.onap.org.v3.Customers"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Connectors">
+            <xml-properties>
+                <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+            </xml-properties>
+            <xml-root-element name="connectors"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.onap.org.v3.Connector"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Connector">
+            <xml-root-element name="connector"/>
+            <java-attributes>
+                <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of resource instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v3.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+                <xml-property name="indexedProps" value="resource-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="container" value="connectors"/>
+                <xml-property name="namespace" value="business"/>
+                <xml-property name="uriTemplate" value="/business/connectors/connector/{resource-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Customers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information."/>
+            </xml-properties>
+            <xml-root-element name="customers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.onap.org.v3.Customer"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Customer">
+            <xml-root-element name="customer"/>
+            <java-attributes>
+                <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers."/>
+                        <xml-property name="defaultValue" value="CUST"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.onap.org.v3.ServiceSubscriptions"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="customer identifiers to provide linkage back to BSS information."/>
+                <xml-property name="nameProps" value="subscriber-name"/>
+                <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type"/>
+                <xml-property name="searchable" value="global-customer-id,subscriber-name"/>
+                <xml-property name="uniqueProps" value="global-customer-id"/>
+                <xml-property name="container" value="customers"/>
+                <xml-property name="namespace" value="business"/>
+                <xml-property name="uriTemplate" value="/business/customers/customer/{global-customer-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceSubscriptions">
+            <xml-properties>
+                <xml-property name="description" value="Collection of objects that group service instances."/>
+            </xml-properties>
+            <xml-root-element name="service-subscriptions"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.onap.org.v3.ServiceSubscription"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceSubscription">
+            <xml-root-element name="service-subscription"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This property will be deleted from A&amp;AI in the near future. Only stop gap solution."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.onap.org.v3.ServiceInstances">
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Object that group service instances."/>
+                <xml-property name="indexedProps" value="service-type"/>
+                <xml-property name="dependentOn" value="customer"/>
+                <xml-property name="container" value="service-subscriptions"/>
+                <xml-property name="crossEntityReference" value="service-instance,service-type"/>
+                <xml-property name="uriTemplate" value="/service-subscriptions/service-subscription/{service-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceInstances">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service instances"/>
+            </xml-properties>
+            <xml-root-element name="service-instances"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.onap.org.v3.ServiceInstance"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceInstance">
+            <xml-root-element name="service-instance"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Uniquely identifies this instance of a service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This field will store a name assigned to the service-instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates the total bandwidth to be used for this service."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL customers will use to access the vHN Portal."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="An identifier that customers assign to the location where this service is being used."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Path to the controller object."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this service."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v3.Metadata"/>
+                <xml-element java-attribute="allottedResources" name="allotted-resources" type="inventory.aai.onap.org.v3.AllottedResources"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Instance of a service"/>
+                <xml-property name="indexedProps" value="service-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status"/>
+                <xml-property name="nameProps" value="service-instance-name"/>
+                <xml-property name="searchable" value="service-instance-id,service-instance-name"/>
+                <xml-property name="uniqueProps" value="service-instance-id"/>
+                <xml-property name="dependentOn" value="service-subscription"/>
+                <xml-property name="container" value="service-instances"/>
+                <xml-property name="uriTemplate" value="/service-instances/service-instance/{service-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceDesignAndCreation">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for objects managed by ASDC"/>
+            </xml-properties>
+            <xml-root-element name="service-design-and-creation"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.onap.org.v3.VnfImages"/>
+                <xml-element java-attribute="services" name="services" type="inventory.aai.onap.org.v3.Services"/>
+                <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.onap.org.v3.ServiceCapabilities"/>
+                <xml-element java-attribute="models" name="models" type="inventory.aai.onap.org.v3.Models"/>
+                <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.onap.org.v3.NamedQueries"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VnfImages">
+            <xml-properties>
+                <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+            </xml-properties>
+            <xml-root-element name="vnf-images"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.onap.org.v3.VnfImage"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VnfImage">
+            <xml-root-element name="vnf-image"/>
+            <java-attributes>
+                <xml-element java-attribute="attUuid" name="att-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of this asset"/>
+                        <xml-property name="dbAlias" value="vnf-image-uuid"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+                <xml-property name="indexedProps" value="application,att-uuid,application-vendor,application-version"/>
+                <xml-property name="uniqueProps" value="att-uuid"/>
+                <xml-property name="container" value="vnf-images"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/vnf-images/vnf-image/{att-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Services">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service model definitions.  Likely to be deprecated in favor of models from ASDC."/>
+            </xml-properties>
+            <xml-root-element name="services"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.onap.org.v3.Service"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Service">
+            <xml-root-element name="service"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description of the service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="service version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Stand-in for service model definitions.  Likely to be deprecated in favor of models from ASDC.  Does not strictly map to ASDC services."/>
+                <xml-property name="indexedProps" value="service-description,service-id"/>
+                <xml-property name="container" value="services"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/services/service/{service-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceCapabilities">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service capabilities."/>
+            </xml-properties>
+            <xml-root-element name="service-capabilities"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.onap.org.v3.ServiceCapability"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceCapability">
+            <xml-root-element name="service-capability"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models.  No new use should be made of this."/>
+                <xml-property name="indexedProps" value="service-type,vnf-type"/>
+                <xml-property name="container" value="service-capabilities"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/service-capabilities/service-capability/{service-type}/{vnf-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Network">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for network inventory resources."/>
+            </xml-properties>
+            <xml-root-element name="network"/>
+            <java-attributes>
+                <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.onap.org.v3.LogicalLinks"/>
+                <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.onap.org.v3.SitePairSets"/>
+                <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.onap.org.v3.VpnBindings"/>
+                <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.onap.org.v3.VplsPes"/>
+                <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.onap.org.v3.MulticastConfigurations"/>
+                <xml-element java-attribute="vces" name="vces" type="inventory.aai.onap.org.v3.Vces"/>
+                <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.onap.org.v3.Vnfcs"/>
+                <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.onap.org.v3.L3Networks"/>
+                <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.onap.org.v3.NetworkPolicies"/>
+                <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.onap.org.v3.GenericVnfs"/>
+                <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.onap.org.v3.LagLinks"/>
+                <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.onap.org.v3.Newvces"/>
+                <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.onap.org.v3.Pnfs"/>
+                <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.onap.org.v3.PhysicalLinks"/>
+                <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.onap.org.v3.IpsecConfigurations"/>
+                <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.onap.org.v3.RouteTableReferences"/>
+                <xml-element java-attribute="instanceGroups" name="instance-groups" type="inventory.aai.onap.org.v3.InstanceGroups"/>
+                <xml-element java-attribute="zones" name="zones" type="inventory.aai.onap.org.v3.Zones"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LogicalLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of logical connections"/>
+            </xml-properties>
+            <xml-root-element name="logical-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.onap.org.v3.LogicalLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LogicalLink">
+            <xml-root-element name="logical-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of logical link, e.g., evc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4, v6, or ds for dual stack (should be att-ip-version)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="For example, static or BGP"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indication of operational status of the logical link."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indication of the network use of the logical link."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkId" name="link-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the logical-link, SDNC generates this."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Circuit id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="purpose" name="purpose" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Reason for this entity, role it is playing"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points"/>
+                <xml-property name="indexedProps" value="link-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose"/>
+                <xml-property name="uniqueProps" value="link-id"/>
+                <xml-property name="container" value="logical-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="searchable" value="link-name"/>
+                <xml-property name="uriTemplate" value="/network/logical-links/logical-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SitePairSets">
+            <xml-properties>
+                <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf"/>
+            </xml-properties>
+            <xml-root-element name="site-pair-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.onap.org.v3.SitePairSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SitePairSet">
+            <xml-root-element name="site-pair-set"/>
+            <java-attributes>
+                <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of site pair set."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.onap.org.v3.RoutingInstances"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Set of instances for probes used to measure service level agreements"/>
+                <xml-property name="indexedProps" value="site-pair-set-id"/>
+                <xml-property name="uniqueProps" value="site-pair-set-id"/>
+                <xml-property name="container" value="site-pair-sets"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/site-pair-sets/site-pair-set/{site-pair-set-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="RoutingInstances">
+            <xml-properties>
+                <xml-property name="description" value="set of probes related to generic-vnf routing instance"/>
+            </xml-properties>
+            <xml-root-element name="routing-instances"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.onap.org.v3.RoutingInstance"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RoutingInstance">
+            <xml-root-element name="routing-instance"/>
+            <java-attributes>
+                <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of routing instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="rpm owner"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.onap.org.v3.SitePairs"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="routing-instance-id"/>
+                <xml-property name="uniqueProps" value="routing-instance-id"/>
+                <xml-property name="dependentOn" value="site-pair-set"/>
+                <xml-property name="container" value="routing-instances"/>
+                <xml-property name="uriTemplate" value="/routing-instances/routing-instance/{routing-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SitePairs">
+            <xml-properties>
+                <xml-property name="description" value="probe within a set"/>
+            </xml-properties>
+            <xml-root-element name="site-pairs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.onap.org.v3.SitePair"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SitePair">
+            <xml-root-element name="site-pair"/>
+            <java-attributes>
+                <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ip version, v4, v6"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The type of destinatination equipment. Could be Router, UCPE, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.onap.org.v3.ClassesOfService"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="site-pair-id"/>
+                <xml-property name="uniqueProps" value="site-pair-id"/>
+                <xml-property name="dependentOn" value="routing-instance"/>
+                <xml-property name="container" value="site-pairs"/>
+                <xml-property name="uriTemplate" value="/site-pairs/site-pair/{site-pair-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ClassesOfService">
+            <xml-properties>
+                <xml-property name="description" value="class-of-service of probe"/>
+            </xml-properties>
+            <xml-root-element name="classes-of-service"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.onap.org.v3.ClassOfService"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ClassOfService">
+            <xml-root-element name="class-of-service"/>
+            <java-attributes>
+                <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="type of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="cos"/>
+                <xml-property name="dependentOn" value="site-pair"/>
+                <xml-property name="container" value="classes-of-service"/>
+                <xml-property name="uriTemplate" value="/classes-of-service/class-of-service/{cos}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VpnBindings">
+            <xml-root-element name="vpn-bindings"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.onap.org.v3.VpnBinding"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VpnBinding">
+            <xml-root-element name="vpn-binding"/>
+            <java-attributes>
+                <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="VPN ID, globally unique within A&amp;AI"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="VPN Name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Number used to identify a VPN, globally unique in the network"/>
+                        <xml-property name="dataLink" value="./route-targets/route-target/{global-route-target}/{route-target-role}"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnType" name="vpn-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the vpn, should be taken from enumerated/valid values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routeDistinguisher" name="route-distinguisher" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routeTargetRole" name="route-target-role" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role assigned to this route target"/>
+                        <xml-property name="dataLink" value="./route-targets/route-target/{global-route-target}/{route-target-role}"/>
+                        <xml-property name="defaultValue" value="BOTH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList">
+                    <xml-properties>
+                        <xml-property name="description" value="l3-networks relate to vpn-bindings"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="VPN binding"/>
+                <xml-property name="nameProps" value="vpn-name,vpn-type"/>
+                <xml-property name="indexedProps" value="vpn-name,vpn-id,global-route-target,vpn-type"/>
+                <xml-property name="searchable" value="vpn-id,vpn-name"/>
+                <xml-property name="uniqueProps" value="vpn-id"/>
+                <xml-property name="container" value="vpn-bindings"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vpn-bindings/vpn-binding/{vpn-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VplsPes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of VPLS Provider Edge routers"/>
+            </xml-properties>
+            <xml-root-element name="vpls-pes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.onap.org.v3.VplsPe"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VplsPe">
+            <xml-root-element name="vpls-pe"/>
+            <java-attributes>
+                <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Temporary location for stag to get to VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v3.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v3.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="VPLS Provider Edge routers."/>
+                <xml-property name="indexedProps" value="prov-status,equipment-name"/>
+                <xml-property name="container" value="vpls-pes"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vpls-pes/vpls-pe/{equipment-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="MulticastConfigurations">
+            <xml-properties>
+                <xml-property name="description" value="multicast configuration of generic-vnf ip-address"/>
+            </xml-properties>
+            <xml-root-element name="multicast-configurations"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.onap.org.v3.MulticastConfiguration"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="MulticastConfiguration">
+            <xml-root-element name="multicast-configuration"/>
+            <java-attributes>
+                <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of multicast configuration."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="protocol of multicast configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="rp type of multicast configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="multicast-configuration-id"/>
+                <xml-property name="uniqueProps" value="multicast-configuration-id"/>
+                <xml-property name="container" value="multicast-configurations"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/multicast-configurations/multicast-configuration/{multicast-configuration-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma.  This object is deprecated."/>
+            </xml-properties>
+            <xml-root-element name="vces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.onap.org.v3.Vce"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vce">
+            <xml-root-element name="vce"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="OBSOLETE -  do not use"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network role being played by this VNF"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of VPE connected to this VCE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router.  Implied length of /64."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="OBSOLETE -  see child relationships"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.onap.org.v3.PortGroups"/>
+                <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.onap.org.v3.Licenses"/>
+                <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.onap.org.v3.Entitlements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma.  This object is deprecated."/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id"/>
+                <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="container" value="vces"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="extends" value="vnf"/>
+                <xml-property name="uriTemplate" value="/network/vces/vce/{vnf-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PortGroups">
+            <xml-root-element name="port-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.onap.org.v3.PortGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PortGroup">
+            <xml-root-element name="port-group"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network name of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID for port group in vmware"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Likely to duplicate value of neutron network name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.onap.org.v3.CvlanTags"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Used to capture the network interfaces of this VCE"/>
+                <xml-property name="nameProps" value="port-group-name"/>
+                <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name"/>
+                <xml-property name="dependentOn" value="vce"/>
+                <xml-property name="container" value="port-groups"/>
+                <xml-property name="uriTemplate" value="/port-groups/port-group/{interface-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CvlanTags">
+            <xml-root-element name="cvlan-tags"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.onap.org.v3.CvlanTagEntry"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CvlanTagEntry">
+            <xml-root-element name="cvlan-tag-entry"/>
+            <java-attributes>
+                <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="See mis-na-virtualization-platform.yang"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="dependentOn" value="port-group"/>
+                <xml-property name="indexedProps" value="cvlan-tag"/>
+                <xml-property name="container" value="cvlan-tags"/>
+                <xml-property name="uriTemplate" value="/cvlan-tags/cvlan-tag/{cvlan-tag-cvlan-tag}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="Vnfcs">
+            <xml-properties>
+                <xml-property name="description" value="virtual network components associated with a vserver from application controller."/>
+            </xml-properties>
+            <xml-root-element name="vnfcs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.onap.org.v3.Vnfc"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vnfc">
+            <xml-root-element name="vnfc"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of vnfc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="function code"/>
+                        <xml-property name="dbAlias" value="nfc-naming-code"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="type"/>
+                        <xml-property name="dbAlias" value="nfc-function"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="prov status of this vnfc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Oam V4 vip address of this vnfc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group notation of VNFC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation"/>
+                <xml-property name="searchable" value="vnfc-name"/>
+                <xml-property name="container" value="vnfcs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vnfcs/vnfc/{vnfc-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3Networks">
+            <xml-root-element name="l3-networks"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.onap.org.v3.L3Network"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="L3Network">
+            <xml-root-element name="l3-network"/>
+            <java-attributes>
+                <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Network ID, should be uuid. Unique across A&amp;AI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network, governed by some naming convention.."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkType" name="network-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the network - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role the network plans - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network technology - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isBoundToVpn" name="is-bound-to-vpn" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Set to true if bound to VPN"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC.  Does not strictly map to ASDC services.  SOON TO BE DEPRECATED"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="network role instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contrail FQDN for the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                        <xml-property name="dbAlias" value="model-customization-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name associated with the physical network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="boolean indicatating whether or not network is a provider network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="boolean indicatating whether or not network is a shared network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="boolean indicatating whether or not network is an external network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Path to the controller object."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.onap.org.v3.Subnets"/>
+                <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.onap.org.v3.CtagAssignments"/>
+                <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.onap.org.v3.SegmentationAssignments"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList">
+                    <xml-properties>
+                        <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Generic network definition"/>
+                <xml-property name="nameProps" value="network-name"/>
+                <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-network-fqdn,network-role"/>
+                <xml-property name="searchable" value="network-id,network-name"/>
+                <xml-property name="uniqueProps" value="network-id"/>
+                <xml-property name="container" value="l3-networks"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/l3-networks/l3-network/{network-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="NetworkPolicies">
+            <xml-root-element name="network-policies"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.onap.org.v3.NetworkPolicy"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="NetworkPolicy">
+            <xml-root-element name="network-policy"/>
+            <java-attributes>
+                <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID representing unique key to this instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contrail FQDN for the policy"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID for the openStack Heat instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="nameProps" value="network-policy-fqdn"/>
+                <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn"/>
+                <xml-property name="searchable" value="network-policy-id,network-policy-fqdn"/>
+                <xml-property name="uniqueProps" value="network-policy-id"/>
+                <xml-property name="container" value="network-policies"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/network-policies/network-policy/{network-policy-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="CtagAssignments">
+            <xml-root-element name="ctag-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.onap.org.v3.CtagAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CtagAssignment">
+            <xml-root-element name="ctag-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="id."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vlan-id-inner"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="ctag-assignments"/>
+                <xml-property name="uriTemplate" value="/ctag-assignments/ctag-assignment/{vlan-id-inner}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Subnets">
+            <xml-root-element name="subnets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.onap.org.v3.Subnet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Subnet">
+            <xml-root-element name="subnet"/>
+            <java-attributes>
+                <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Subnet ID, should be UUID."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name associated with the subnet."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of this subnet"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="gateway ip address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="network start address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="cidr mask"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ip version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="dhcpEnabled" name="dhcp-enabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="dhcp enabled"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the start address reserved for use by dhcp"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the last address reserved for use by dhcp"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="subnet-id,subnet-name"/>
+                <xml-property name="nameProps" value="subnet-name"/>
+                <xml-property name="uniqueProps" value="subnet-id"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="subnets"/>
+                <xml-property name="uriTemplate" value="/subnets/subnet/{subnet-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="GenericVnfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of VNFs"/>
+            </xml-properties>
+            <xml-root-element name="generic-vnfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.onap.org.v3.GenericVnf"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="GenericVnf">
+            <xml-root-element name="generic-vnf"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service, does not necessarily map to ASDC service models.  SOON TO BE DEPRECATED"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational.  Valid values are in-service-path and out-of-service-path."/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="OBSOLETE -  do not use"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, used by MSO."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of managed by ATT or customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 Loopback address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 management address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only uCPE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only by uCPE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates whether generic-vnf access uses SSH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                        <xml-property name="dbAlias" value="model-customization-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="as-number of the VNF"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="represents sub zone of the rr plane"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Path to the controller object."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v3.LInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v3.LagInterfaces"/>
+                <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.onap.org.v3.VfModules"/>
+                <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.onap.org.v3.Licenses"/>
+                <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.onap.org.v3.Entitlements"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="General purpose VNF"/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="container" value="generic-vnfs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="extends" value="vnf"/>
+                <xml-property name="uriTemplate" value="/network/generic-vnfs/generic-vnf/{vnf-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VfModules">
+            <xml-properties>
+                <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs"/>
+            </xml-properties>
+            <xml-root-element name="vf-modules"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.onap.org.v3.VfModule"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VfModule">
+            <xml-root-element name="vf-module"/>
+            <java-attributes>
+                <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of vf-module."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of vf-module"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isBaseVfModule" name="is-base-vf-module" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is base vf module"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                        <xml-property name="dbAlias" value="model-customization-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the Contrail unique ID for a service-instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="moduleIndex" name="module-index" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Path to the controller object."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="a deployment unit of VNFCs"/>
+                <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-service-instance-fqdn"/>
+                <xml-property name="searchable" value="vf-module-id,vf-module-name"/>
+                <xml-property name="dependentOn" value="generic-vnf"/>
+                <xml-property name="container" value="vf-modules"/>
+                <xml-property name="uriTemplate" value="/vf-modules/vf-module/{vf-module-id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="LagLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of link aggregation connections"/>
+            </xml-properties>
+            <xml-root-element name="lag-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.onap.org.v3.LagLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LagLink">
+            <xml-root-element name="lag-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Alphabetical concatenation of lag-interface names"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="LAG links can connect lag-interfaces"/>
+                <xml-property name="indexedProps" value="link-name"/>
+                <xml-property name="container" value="lag-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/lag-links/lag-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Newvces">
+            <xml-properties>
+                <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+            </xml-properties>
+            <xml-root-element name="newvces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.onap.org.v3.Newvce"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Newvce">
+            <xml-root-element name="newvce"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="OBSOLETE -  do not use"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v3.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2"/>
+                <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2"/>
+                <xml-property name="uniqueProps" value="vnf-id2"/>
+                <xml-property name="container" value="newvces"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/newvces/newvce/{vnf-id2}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pnfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Physical Network Functions."/>
+            </xml-properties>
+            <xml-root-element name="pnfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.onap.org.v3.Pnf"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pnf">
+            <xml-root-element name="pnf"/>
+            <java-attributes>
+                <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique name of Physical Network Function."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="name of Physical Network Function."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="source of name2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="id of pnf"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of managed by ATT or customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Serial number of the device"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV4 Loopback 0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV6 Loopback 0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV4 AIM address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV6 AIM address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IPV6 OAM address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="CANOPI's inventory status.  Only set with values exactly as defined by CANOPI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Nf Role is the role performed by this instance in the network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v3.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v3.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE."/>
+                <xml-property name="indexedProps" value="pnf-name,orchestration-status,inv-status"/>
+                <xml-property name="searchable" value="pnf-name"/>
+                <xml-property name="uniqueProps" value="pnf-name"/>
+                <xml-property name="container" value="pnfs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/pnfs/pnf/{pnf-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PhysicalLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+            </xml-properties>
+            <xml-root-element name="physical-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.onap.org.v3.PhysicalLink"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="maximumDepth" value="0"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PhysicalLink">
+            <xml-root-element name="physical-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Circuit it"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Dual access mode (e.g., primary, secondary"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="To provide information on who manages this circuit. A&amp;AI or 3rd party transport provider"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the service Provider on this link."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+                <xml-property name="indexedProps" value="circuit-id,link-name"/>
+                <xml-property name="alternateKeys1" value="circuit-id"/>
+                <xml-property name="container" value="physical-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="searchable" value="link-name,circuit-id"/>
+                <xml-property name="uriTemplate" value="/network/physical-links/physical-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VigServers">
+            <xml-root-element name="vig-servers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.onap.org.v3.VigServer"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VigServer">
+            <xml-root-element name="vig-server"/>
+            <java-attributes>
+                <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 IP of the vig server"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 IP of the vig server"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607"/>
+                <xml-property name="indexedProps" value="vig-address-type"/>
+                <xml-property name="dependentOn" value="ipsec-configuration"/>
+                <xml-property name="container" value="vig-servers"/>
+                <xml-property name="uriTemplate" value="/vig-servers/vig-server/{vig-address-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="IpsecConfigurations">
+            <xml-root-element name="ipsec-configurations"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.onap.org.v3.IpsecConfiguration"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="IpsecConfiguration">
+            <xml-root-element name="ipsec-configuration"/>
+            <java-attributes>
+                <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of this configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ATT can offer a shared DMZ or a DMZ specific to a customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network address of shared DMZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="can be 1 or 2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="pre-shared key for the above group name "/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Lifetime for IKEv1 SA"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="md5, sha1, sha256, sha384"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Life time for IPSec SA"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="enable PFS or not"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="user ID for xAuth, sm-user,ucpeHostName,nmteHostName"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The time between DPD probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+                <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.onap.org.v3.VigServers"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C"/>
+                <xml-property name="indexedProps" value="ipsec-configuration-id"/>
+                <xml-property name="uniqueProps" value="ipsec-configuration-id"/>
+                <xml-property name="container" value="ipsec-configurations"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="NotificationEvent">
+            <xml-root-element name="notification-event"/>
+            <java-attributes>
+                <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String"/>
+                <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.onap.org.v3.NotificationEventHeader"/>
+                <xml-any-element java-attribute="entity"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="NotificationEventHeader">
+            <xml-root-element name="notification-event-header"/>
+            <java-attributes>
+                <xml-element java-attribute="id" name="id" type="java.lang.String"/>
+                <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String"/>
+                <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String"/>
+                <xml-element java-attribute="domain" name="domain" type="java.lang.String"/>
+                <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String"/>
+                <xml-element java-attribute="severity" name="severity" type="java.lang.String"/>
+                <xml-element java-attribute="eventType" name="event-type" type="java.lang.String"/>
+                <xml-element java-attribute="version" name="version" type="java.lang.String"/>
+                <xml-element java-attribute="action" name="action" type="java.lang.String"/>
+                <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String"/>
+                <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String"/>
+                <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String"/>
+                <xml-element java-attribute="status" name="status" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="AaiInternal">
+            <xml-root-element name="aai-internal"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.onap.org.v3.ReservedPropNames"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.onap.org.v3.EdgePropNames"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="ReservedPropNames">
+            <xml-properties>
+                <xml-property name="description" value="Internal map to define some reserved properties of a vertex"/>
+                <xml-property name="uniqueProps" value="aai-unique-key"/>
+                <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri"/>
+            </xml-properties>
+            <xml-root-element name="reserved-prop-names"/>
+            <java-attributes>
+                <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String"/>
+                <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String"/>
+                <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long"/>
+                <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String"/>
+                <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long"/>
+                <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String"/>
+                <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="EdgePropNames">
+            <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now -->
+            <xml-properties>
+                <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules"/>
+                <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV"/>
+            </xml-properties>
+            <xml-root-element name="edge-prop-names"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String"/>
+                <xml-element java-attribute="direction" name="direction" type="java.lang.String"/>
+                <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String"/>
+                <xml-element java-attribute="containsOtherV" name="contains-other-v" type="java.lang.String"/>
+                <xml-element java-attribute="deleteOtherV" name="delete-other-v" type="java.lang.String"/>
+                <xml-element java-attribute="svcinfra" name="SVC-INFRA" type="java.lang.String"/>
+                <xml-element java-attribute="preventDelete" name="prevent-delete" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Models">
+            <xml-properties>
+                <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models"/>
+            </xml-properties>
+            <xml-root-element name="models"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.onap.org.v3.Model"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Model">
+            <xml-root-element name="model"/>
+            <xml-properties>
+                <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version"/>
+                <xml-property name="nameProps" value="model-type"/>
+                <xml-property name="indexedProps" value="model-invariant-id,model-type"/>
+                <xml-property name="uniqueProps" value="model-invariant-id"/>
+                <xml-property name="container" value="models"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/models/model/{model-invariant-id}"/>
+            </xml-properties>
+            <java-attributes>
+                <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.onap.org.v3.ModelVers"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+
+        <java-type name="ModelVers">
+            <xml-root-element name="model-vers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelVer" name="model-ver" type="inventory.aai.onap.org.v3.ModelVer"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelVer">
+            <xml-root-element name="model-ver"/>
+            <xml-properties>
+                <xml-property name="description" value="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models"/>
+                <xml-property name="nameProps" value="model-name"/>
+                <xml-property name="indexedProps" value="model-version-id,model-name,model-version"/>
+                <xml-property name="uniqueProps" value="model-version-id"/>
+                <xml-property name="container" value="model-vers"/>
+                <xml-property name="uriTemplate" value="/model-vers/model-ver/{model-version-id}"/>
+            </xml-properties>
+            <java-attributes>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the model, which can change from version to version."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v3.ModelElements"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v3.Metadata"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelElements">
+            <xml-root-element name="model-elements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.onap.org.v3.ModelElement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelElement">
+            <xml-properties>
+                <xml-property name="description" value="Defines how other models combine to make up a higher-level model."/>
+                <xml-property name="uniqueProps" value="model-element-uuid"/>
+                <xml-property name="indexedProps" value="model-element-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="model-elements"/>
+                <xml-property name="uriTemplate" value="/model-elements/model-element/{model-element-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="model-element"/>
+            <java-attributes>
+                <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="How many of this type of element are required/allowed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String">
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v3.ModelElements">
+                    <xml-properties>
+                        <xml-property name="description" value="Defines how other models combine to make up a higher-level model"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.onap.org.v3.ModelConstraints">
+                    <xml-properties>
+                        <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelConstraints">
+            <xml-root-element name="model-constraints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.onap.org.v3.ModelConstraint"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelConstraint">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="model-constraint-uuid"/>
+                <xml-property name="indexedProps" value="model-constraint-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="model-constraints"/>
+                <xml-property name="uriTemplate" value="/model-constraints/model-constraint/{model-constraint-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="model-constraint"/>
+            <java-attributes>
+                <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.onap.org.v3.ConstrainedElementSets"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ConstrainedElementSets">
+            <xml-root-element name="constrained-element-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.onap.org.v3.ConstrainedElementSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ConstrainedElementSet">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="constrained-element-set-uuid"/>
+                <xml-property name="indexedProps" value="constrained-element-set-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="constrained-element-sets"/>
+                <xml-property name="uriTemplate" value="/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="constrained-element-set"/>
+            <java-attributes>
+                <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.onap.org.v3.ElementChoiceSets"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ElementChoiceSets">
+            <xml-root-element name="element-choice-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.onap.org.v3.ElementChoiceSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ElementChoiceSet">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="element-choice-set-uuid"/>
+                <xml-property name="indexedProps" value="element-choice-set-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="element-choice-sets"/>
+                <xml-property name="uriTemplate" value="/element-choice-sets/element-choice-set/{element-choice-set-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="element-choice-set"/>
+            <java-attributes>
+                <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v3.ModelElements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueries">
+            <xml-root-element name="named-queries"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v3.NamedQuery"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQuery">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="nameProps" value="named-query-name"/>
+                <xml-property name="uniqueProps" value="named-query-uuid"/>
+                <xml-property name="indexedProps" value="named-query-uuid,named-query-name"/>
+                <xml-property name="container" value="named-queries"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/named-queries/named-query/{named-query-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="named-query"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String">
+                    <xml-element-wrapper name="required-input-params"/>
+                </xml-element>
+                <xml-element java-attribute="description" name="description" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v3.NamedQueryElements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueryElements">
+            <xml-root-element name="named-query-elements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.onap.org.v3.NamedQueryElement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueryElement">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="named-query-element-uuid"/>
+                <xml-property name="indexedProps" value="named-query-element-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="named-query-elements"/>
+                <xml-property name="uriTemplate" value="/named-query-elements/named-query-element/{named-query-element-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="named-query-element"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String"/>
+                <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v3.NamedQueryElements"/>
+                <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.onap.org.v3.RelatedLookups"/>
+                <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.onap.org.v3.PropertyConstraints"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedLookups">
+            <xml-root-element name="related-lookups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.onap.org.v3.RelatedLookup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedLookup">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="related-lookup-uuid"/>
+                <xml-property name="indexedProps" value="related-lookup-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="related-lookups"/>
+                <xml-property name="uriTemplate" value="/related-lookups/related-lookup/{related-lookup-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="related-lookup"/>
+            <java-attributes>
+                <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PropertyConstraints">
+            <xml-root-element name="property-constraints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.onap.org.v3.PropertyConstraint"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PropertyConstraint">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="property-constraint-uuid"/>
+                <xml-property name="indexedProps" value="property-constraint-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="property-constraints"/>
+                <xml-property name="uriTemplate" value="/property-constraints/property-constraint/{property-constraint-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="property-constraint"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="propertyName" name="property-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelAndNamedQuerySearch">
+            <xml-properties>
+                <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="model-and-named-query-search"/>
+            <java-attributes>
+                <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.onap.org.v3.QueryParameters"/>
+                <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.onap.org.v3.InstanceFilters"/>
+                <xml-element java-attribute="secondaryFilts" name="secondary-filts" type="inventory.aai.onap.org.v3.SecondaryFilts"/>
+                <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String"/>
+                <xml-element java-attribute="secondaryFilterCutPoint" name="secondary-filter-cut-point" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="QueryParameters">
+            <xml-properties>
+                <xml-property name="description" value="QueryParameters for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="query-parameters"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v3.NamedQuery"/>
+                <xml-element java-attribute="model" name="model" type="inventory.aai.onap.org.v3.OverloadedModel"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="OverloadedModel">
+            <xml-root-element name="overloaded-model"/>
+            <xml-properties>
+                <xml-property name="description" value="Allows for legacy POST of old-style and new-style models"/>
+            </xml-properties>
+            <java-attributes>
+                <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the model, which can change from version to version."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Invariant unique ID which does not change from version to version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.onap.org.v3.ModelVers"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceFilters">
+            <xml-properties>
+                <xml-property name="description" value="InstanceFilters for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="instance-filters"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.onap.org.v3.InstanceFilter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceFilter">
+            <xml-properties>
+                <xml-property name="description" value="InstanceFilter for performing a named-query or model query"/>
+                <xml-property name="container" value="instance-filters"/>
+            </xml-properties>
+            <xml-root-element name="instance-filter"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SecondaryFilts">
+            <xml-properties>
+                <xml-property name="description" value="SecondaryFilts for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="secondary-filts"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilt" name="secondary-filt" type="inventory.aai.onap.org.v3.SecondaryFilt"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SecondaryFilt">
+            <xml-properties>
+                <xml-property name="description" value="SecondaryFilt for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="secondary-filt"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Properties">
+            <xml-properties>
+                <xml-property name="description" value="Property holder for query properties or instance properties"/>
+            </xml-properties>
+            <xml-root-element name="properties"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ResponseList">
+            <xml-properties>
+                <xml-property name="description" value="Response container for the results of a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="response-list"/>
+            <java-attributes>
+                <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v3.InventoryResponseItems"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryResponseItems">
+            <xml-properties>
+                <xml-property name="description" value="Container for inventory items in response list"/>
+                <xml-property name="container" value="response-list"/>
+            </xml-properties>
+            <xml-root-element name="inventory-response-items"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.onap.org.v3.InventoryResponseItem"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryResponseItem">
+            <xml-properties>
+                <xml-property name="description" value="Inventory item for response list"/>
+                <xml-property name="container" value="inventory-response-items"/>
+            </xml-properties>
+            <xml-root-element name="inventory-response-item"/>
+            <java-attributes>
+                <xml-element java-attribute="modelName" name="model-name" type="java.lang.String"/>
+                <xml-any-element java-attribute="item"/>
+                <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.onap.org.v3.ExtraProperties"/>
+                <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v3.InventoryResponseItems"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ExtraProperties">
+            <xml-properties>
+                <xml-property name="description" value="Extra properties for inventory item for response list"/>
+            </xml-properties>
+            <xml-root-element name="extra-properties"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.onap.org.v3.ExtraProperty"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ExtraProperty">
+            <xml-root-element name="extra-property"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-any-element java-attribute="propertyValue" lax="true" name="property-value"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RouteTableReferences">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack route table references"/>
+            </xml-properties>
+            <xml-root-element name="route-table-references"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.onap.org.v3.RouteTableReference"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RouteTableReference">
+            <xml-root-element name="route-table-reference"/>
+            <java-attributes>
+                <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="FQDN entry in the route table."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+
+            <xml-properties>
+                <xml-property name="description" value="Openstack route table reference."/>
+                <xml-property name="nameProps" value="route-table-reference-fqdn"/>
+                <xml-property name="uniqueProps" value="route-table-reference-id"/>
+                <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn"/>
+                <xml-property name="container" value="route-table-references"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/route-table-references/route-table-reference/{route-table-reference-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="InstanceGroups">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack route table references"/>
+            </xml-properties>
+            <xml-root-element name="instance-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="instanceGroup" name="instance-group" type="inventory.aai.onap.org.v3.InstanceGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceGroup">
+            <xml-root-element name="instance-group"/>
+            <java-attributes>
+                <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Instance Group ID, UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="description" name="description" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Descriptive text to help identify the usage of this instance-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="type" name="type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Only valid value today is lower case ha for high availability"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subType" name="sub-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+
+            <xml-properties>
+                <xml-property name="description" value="General mechanism for grouping instances"/>
+                <xml-property name="nameProps" value="description"/>
+                <xml-property name="uniqueProps" value="id"/>
+                <xml-property name="indexedProps" value="id,description,type,sub-type"/>
+                <xml-property name="container" value="instance-groups"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/instance-groups/instance-group/{id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="SegmentationAssignments">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack segmentation assignments"/>
+            </xml-properties>
+            <xml-root-element name="segmentation-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.onap.org.v3.SegmentationAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SegmentationAssignment">
+            <xml-root-element name="segmentation-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack segmentation assignment."/>
+                <xml-property name="indexedProps" value="segmentation-id"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="segmentation-assignments"/>
+                <xml-property name="uriTemplate" value="/segmentation-assignments/segmentation-assignment/{segmentation-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="AllottedResources">
+            <xml-properties>
+                <xml-property name="description" value="This object is used to store slices of services being offered"/>
+            </xml-properties>
+            <xml-root-element name="allotted-resources"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="allottedResource" name="allotted-resource" type="inventory.aai.onap.org.v3.AllottedResource"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AllottedResource">
+            <xml-root-element name="allotted-resource"/>
+            <java-attributes>
+                <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Allotted Resource id UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="description" name="description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The descriptive information assigned to this allotted resource instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Link back to more information in the controller"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service."/>
+                        <xml-property name="dbAlias" value="model-customization-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="tunnelXconnects" name="tunnel-xconnects" type="inventory.aai.onap.org.v3.TunnelXconnects"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+
+            <xml-properties>
+                <xml-property name="description" value="Represents a slice or partial piece of a resource that gets separately allotted"/>
+                <xml-property name="nameProps" value="description"/>
+                <xml-property name="uniqueProps" value="id"/>
+                <xml-property name="indexedProps" value="id,persona-model-id,persona-model-version"/>
+                <xml-property name="dependentOn" value="service-instance"/>
+                <xml-property name="container" value="allotted-resources"/>
+                <!--  <xml-property name="namespace" value="network" /> -->
+                <xml-property name="uriTemplate" value="/allotted-resources/allotted-resource/{id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="TunnelXconnects">
+            <xml-properties>
+                <xml-property name="description" value="This object is used to store the specific tunnel cross connect aspects of an allotted resource"/>
+            </xml-properties>
+            <xml-root-element name="tunnel-xconnects"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="tunnelXconnect" name="tunnel-xconnect" type="inventory.aai.onap.org.v3.TunnelXconnect"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="TunnelXconnect">
+            <xml-root-element name="tunnel-xconnect"/>
+            <java-attributes>
+                <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Allotted Resource id UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The WAN uplink bandwidth for WAN1"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The WAN downlink bandwidth for WAN1"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The WAN uplink bandwidth for WAN2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The WAN downlink bandwidth for WAN2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+
+            <xml-properties>
+                <xml-property name="description" value="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted"/>
+                <xml-property name="uniqueProps" value="id"/>
+                <xml-property name="indexedProps" value="id"/>
+                <xml-property name="dependentOn" value="allotted-resource"/>
+                <xml-property name="container" value="tunnel-xconnects"/>
+                <!--  <xml-property name="namespace" value="network" /> -->
+                <xml-property name="uriTemplate" value="/tunnel-xconnects/tunnel-xconnect/{id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Entitlements">
+            <xml-properties>
+                <xml-property name="description" value="Entitlements, keyed by group-uuid and resource-uuid, related to license management"/>
+            </xml-properties>
+            <xml-root-element name="entitlements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="entitlement" name="entitlement" type="inventory.aai.onap.org.v3.Entitlement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Entitlement">
+            <xml-root-element name="entitlement"/>
+            <java-attributes>
+                <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID for the entitlement group the resource comes from, should be uuid."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of an entitlement resource. "/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Metadata for entitlement group."/>
+                <xml-property name="indexedProps" value="group-uuid,resource-uuid"/>
+                <xml-property name="dependentOn" value="generic-vnf,vce"/>
+                <xml-property name="container" value="entitlements"/>
+                <xml-property name="uriTemplate" value="/entitlements/entitlement/{group-uuid}/{resource-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="Licenses">
+            <xml-properties>
+                <xml-property name="description" value="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management"/>
+            </xml-properties>
+            <xml-root-element name="licenses"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="license" name="license" type="inventory.aai.onap.org.v3.License"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="License">
+            <xml-root-element name="license"/>
+            <java-attributes>
+                <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID for the license group the resource belongs to, should be uuid."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of a license resource. "/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Metadata for license group."/>
+                <xml-property name="indexedProps" value="group-uuid,resource-uuid"/>
+                <xml-property name="dependentOn" value="generic-vnf,vce"/>
+                <xml-property name="container" value="licenses"/>
+                <xml-property name="uriTemplate" value="/licenses/license/{group-uuid}/{resource-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vnf">
+            <xml-root-element name="vnf"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Abstract vnf class"/>
+                <xml-property name="indexedProps" value="vnf-id"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="inheritors" value="vce,generic-vnf"/>
+                <xml-property name="abstract" value="true"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Zones">
+            <xml-properties>
+                <xml-property name="description" value="Collection of zones"/>
+            </xml-properties>
+            <xml-root-element name="zones"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="zone" name="zone" type="inventory.aai.onap.org.v3.Zone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Zone">
+            <xml-root-element name="zone"/>
+            <java-attributes>
+                <xml-element java-attribute="zoneId" name="zone-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Code assigned by AIC to the zone"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="zoneName" name="zone-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="English name associated with the zone"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="designType" name="design-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Design of zone [Medium/Large…]"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="zoneContext" name="zone-context" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Context of zone [production/test]"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="status" name="status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Status of a zone."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v3.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="A zone is a grouping of assets in a location homing to the same connections into the CBB"/>
+                <xml-property name="nameProps" value="zone-name"/>
+                <xml-property name="indexedProps" value="zone-id,design-type,zone-context"/>
+                <xml-property name="uniqueProps" value="zone-id"/>
+                <xml-property name="container" value="zones"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/zones/zone/{zone-id}"/>
+            </xml-properties>
+        </java-type>
+
+    </java-types>
+</xml-bindings>
\ No newline at end of file
diff --git a/aai-core/src/test/resources/oxm/dbalias_oxm_two.xml b/aai-core/src/test/resources/oxm/dbalias_oxm_two.xml
new file mode 100644 (file)
index 0000000..9f5b9dc
--- /dev/null
@@ -0,0 +1,4716 @@
+<!--
+
+    ============LICENSE_START=======================================================
+    org.onap.aai
+    ================================================================================
+    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 is a trademark and service mark of AT&T Intellectual Property.
+
+-->
+<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.onap.org.v2" xml-mapping-metadata-complete="true">
+    <xml-schema element-form-default="QUALIFIED">
+        <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v2"/>
+    </xml-schema>
+    <java-types>
+        <java-type name="Inventory">
+            <xml-root-element name="inventory"/>
+            <java-attributes>
+                <xml-element java-attribute="search" name="search" type="inventory.aai.onap.org.v2.Search"/>
+                <xml-element java-attribute="actions" name="actions" type="inventory.aai.onap.org.v2.Actions"/>
+                <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.onap.org.v2.CloudInfrastructure"/>
+                <xml-element java-attribute="business" name="business" type="inventory.aai.onap.org.v2.Business"/>
+                <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.onap.org.v2.ServiceDesignAndCreation"/>
+                <xml-element java-attribute="network" name="network" type="inventory.aai.onap.org.v2.Network"/>
+                <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.onap.org.v2.AaiInternal"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Search">
+            <xml-root-element name="search"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.onap.org.v2.EdgeTagQueryResult"/>
+                <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.onap.org.v2.EdgeTagQueryRequest"/>
+                <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.onap.org.v2.SearchResults"/>
+                <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.onap.org.v2.SdnZoneResponse"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="EdgeTagQueryResult">
+            <xml-root-element name="edge-tag-query-result"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v2.TaggedInventoryItemList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="TaggedInventoryItemList">
+            <xml-root-element name="tagged-inventory-item-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.onap.org.v2.InventoryItem"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryItem">
+            <xml-root-element name="inventory-item"/>
+            <java-attributes>
+                <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String"/>
+                <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.onap.org.v2.InventoryItemData"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v2.TaggedInventoryItemList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryItemData">
+            <xml-root-element name="inventory-item-data"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="EdgeTagQueryRequest">
+            <xml-root-element name="edge-tag-query-request"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String"/>
+                <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String"/>
+                <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.onap.org.v2.StartNodeFilter"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.onap.org.v2.IncludeNodeFilter"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.onap.org.v2.SecondaryFilter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="StartNodeFilter">
+            <xml-root-element name="start-node-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="IncludeNodeFilter">
+            <xml-root-element name="include-node-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SecondaryFilter">
+            <xml-root-element name="secondary-filter"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SearchResults">
+            <xml-root-element name="search-results"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.onap.org.v2.ResultData"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ResultData">
+            <xml-root-element name="result-data"/>
+            <java-attributes>
+                <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The specific type of node in the A&amp;AI graph"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The URL to the specific resource"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SdnZoneResponse">
+            <xml-root-element name="sdn-zone-response"/>
+            <java-attributes>
+                <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v2.OamNetworks"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.onap.org.v2.AzAndDvsSwitches"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AzAndDvsSwitches">
+            <xml-root-element name="az-and-dvs-switches"/>
+            <java-attributes>
+                <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v2.DvsSwitches"/>
+                <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v2.AvailabilityZone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Actions">
+            <xml-properties>
+                <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)."/>
+            </xml-properties>
+            <xml-root-element name="actions"/>
+            <java-attributes>
+                <xml-element java-attribute="update" name="update" type="inventory.aai.onap.org.v2.Update"/>
+                <xml-element java-attribute="notify" name="notify" type="inventory.aai.onap.org.v2.Notify"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Update">
+            <xml-properties>
+                <xml-property name="description" value="Serves a PATCH like function.  Does not enforce concurrency control.  Clear each usage with AAI team."/>
+            </xml-properties>
+            <xml-root-element name="update"/>
+            <java-attributes>
+                <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.onap.org.v2.UpdateNodeKey"/>
+                <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.onap.org.v2.Action"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Action">
+            <xml-root-element name="action"/>
+            <java-attributes>
+                <xml-element java-attribute="actionType" name="action-type" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.onap.org.v2.ActionData"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ActionData">
+            <xml-root-element name="action-data"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="UpdateNodeKey">
+            <xml-root-element name="update-node-key"/>
+            <java-attributes>
+                <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+                <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Notify">
+            <xml-root-element name="notify"/>
+            <java-attributes>
+                <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String"/>
+                <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.onap.org.v2.KeyData"/>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="KeyData">
+            <xml-root-element name="key-data"/>
+            <java-attributes>
+                <xml-element java-attribute="keyName" name="key-name" type="java.lang.String"/>
+                <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudInfrastructure">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for cloud infrastructure."/>
+            </xml-properties>
+            <xml-root-element name="cloud-infrastructure"/>
+            <java-attributes>
+                <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.onap.org.v2.Complexes"/>
+                <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.onap.org.v2.CloudRegions"/>
+                <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.onap.org.v2.NetworkProfiles"/>
+                <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.onap.org.v2.Pservers"/>
+                <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.onap.org.v2.VirtualDataCenters"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudRegions">
+            <xml-root-element name="cloud-regions"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.onap.org.v2.CloudRegion"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CloudRegion">
+            <xml-root-element name="cloud-region"/>
+            <java-attributes>
+                <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the cloud (e.g., openstack)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Cloud-owner defined type indicator (e.g., DCP, LCP)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Software version employed at the site"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL of the keystone identity service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Zone where the cloud is homed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="complex name for cloud-region instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.onap.org.v2.VolumeGroups"/>
+                <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v2.Tenants"/>
+                <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v2.Flavors"/>
+                <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v2.GroupAssignments"/>
+                <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.onap.org.v2.Snapshots"/>
+                <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v2.Images"/>
+                <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v2.DvsSwitches"/>
+                <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v2.OamNetworks"/>
+                <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v2.AvailabilityZones"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation."/>
+                <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type"/>
+                <xml-property name="nameProps" value="owner-defined-type"/>
+                <xml-property name="container" value="cloud-regions"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="VolumeGroups">
+            <xml-properties>
+                <xml-property name="description" value="Collection of persistent block-level storage."/>
+            </xml-properties>
+            <xml-root-element name="volume-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.onap.org.v2.VolumeGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VolumeGroup">
+            <xml-root-element name="volume-group"/>
+            <java-attributes>
+                <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of volume-group."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeGroupName" name="volume-group-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the volume group."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this volume-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this volume-group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Persistent block-level storage."/>
+                <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="volume-groups"/>
+                <xml-property name="uriTemplate" value="/volume-groups/volume-group/{volume-group-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="RelationshipList">
+            <xml-root-element name="relationship-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.onap.org.v2.Relationship"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Relationship">
+            <xml-root-element name="relationship"/>
+            <java-attributes>
+                <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="A keyword provided by A&amp;AI to indicate type of node."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to the object in A&amp;AI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.onap.org.v2.RelationshipData"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.onap.org.v2.RelatedToProperty"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedToProperty">
+            <xml-root-element name="related-to-property"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Key part of a key/value pair"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Value part of a key/value pair"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelationshipData">
+            <xml-root-element name="relationship-data"/>
+            <java-attributes>
+                <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="A keyword provided by A&amp;AI to indicate an attribute."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Value of the attribute."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Complexes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+            </xml-properties>
+            <xml-root-element name="complexes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.onap.org.v2.Complex"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Complex">
+            <xml-root-element name="complex"/>
+            <java-attributes>
+                <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Data center code which can be an alternate way to identify a complex"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Gamma complex name for LCP instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL of the keystone identity service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type, e.g., central office, data center."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="street2" name="street2" type="java.lang.String"/>
+                <xml-element java-attribute="city" name="city" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="state" name="state" type="java.lang.String"/>
+                <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="country" name="country" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="region" name="region" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="latitude" name="latitude" type="java.lang.String"/>
+                <xml-element java-attribute="longitude" name="longitude" type="java.lang.String"/>
+                <xml-element java-attribute="elevation" name="elevation" type="java.lang.String"/>
+                <xml-element java-attribute="lata" name="lata" type="java.lang.String"/>
+                <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.onap.org.v2.CtagPools"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical locations that can house cloud-regions."/>
+                <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id"/>
+                <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code"/>
+                <xml-property name="uniqueProps" value="physical-location-id"/>
+                <xml-property name="container" value="complexes"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/complexes/complex/{physical-location-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CtagPools">
+            <xml-root-element name="ctag-pools"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.onap.org.v2.CtagPool"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CtagPool">
+            <xml-root-element name="ctag-pool"/>
+            <java-attributes>
+                <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="The Target provider edge router"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the availability zone"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Describes what the intended purpose of this pool is."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Comma separated list of ctags"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose."/>
+                <xml-property name="indexedProps" value="availability-zone-name"/>
+                <xml-property name="dependentOn" value="complex"/>
+                <xml-property name="container" value="ctag-pools"/>
+                <xml-property name="uriTemplate" value="/ctag-pools/ctag-pool/{target-pe}/{availability-zone-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Tenants">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack tenants."/>
+            </xml-properties>
+            <xml-root-element name="tenants"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.onap.org.v2.Tenant"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Tenant">
+            <xml-root-element name="tenant"/>
+            <java-attributes>
+                <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id relative to the cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Readable name of tenant"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.onap.org.v2.Vservers"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack tenant"/>
+                <xml-property name="nameProps" value="tenant-name"/>
+                <xml-property name="indexedProps" value="tenant-name,tenant-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="tenants"/>
+                <xml-property name="uriTemplate" value="/tenants/tenant/{tenant-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vservers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs."/>
+            </xml-properties>
+            <xml-root-element name="vservers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.onap.org.v2.Vserver"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vserver">
+            <xml-root-element name="vserver"/>
+            <java-attributes>
+                <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier for this vserver relative to its tenant"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of vserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternative name of vserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.onap.org.v2.Volumes"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v2.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual Servers, aka virtual machine or VM."/>
+                <xml-property name="nameProps" value="vserver-name"/>
+                <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2"/>
+                <xml-property name="searchable" value="vserver-name,vserver-id,vserver-name2"/>
+                <xml-property name="dependentOn" value="tenant"/>
+                <xml-property name="container" value="vservers"/>
+                <xml-property name="uriTemplate" value="/vservers/vserver/{vserver-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="LInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of logical interfaces."/>
+            </xml-properties>
+            <xml-root-element name="l-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.onap.org.v2.LInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LInterface">
+            <xml-root-element name="l-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name given to the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="MAC address for the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Whether A&amp;AI should be managing this interface of not. Could have value like CUSTOMER"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.onap.org.v2.Vlans"/>
+                <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.onap.org.v2.SriovVfs"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v2.L3InterfaceIpv4AddressList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v2.L3InterfaceIpv6AddressList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Logical interfaces, e.g., a vnic."/>
+                <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name"/>
+                <xml-property name="dependentOn" value="generic-vnf,newvce,p-interface,vserver,lag-interface,l-interface"/>
+                <xml-property name="container" value="l-interfaces"/>
+                <xml-property name="uriTemplate" value="/l-interfaces/l-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SriovVfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of SR-IOV Virtual Functions."/>
+            </xml-properties>
+            <xml-root-element name="sriov-vfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.onap.org.v2.SriovVf"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="SriovVf">
+            <xml-root-element name="sriov-vf"/>
+            <java-attributes>
+                <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="PCI ID used to identify the sriov-vf"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This option is used to set the link status.  Valid values as of 1607 are on, off, and auto."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)"/>
+                <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id"/>
+                <xml-property name="dependentOn" value="l-interface"/>
+                <xml-property name="container" value="sriov-vfs"/>
+                <xml-property name="uriTemplate" value="/sriov-vfs/sriov-vf/{pci-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3InterfaceIpv4AddressList">
+            <xml-root-element name="l3-interface-ipv4-address-list"/>
+            <java-attributes>
+                <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix length, 32 for single address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator of fixed or floating address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPv4 Address Range"/>
+                <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+                <xml-property name="dependentOn" value="vlan,l-interface"/>
+                <xml-property name="uriTemplate" value="/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vlans">
+            <xml-root-element name="vlans"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.onap.org.v2.Vlan"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vlan">
+            <xml-root-element name="vlan"/>
+            <java-attributes>
+                <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="String that identifies the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to describe (the service associated with) the vlan"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnKey" name="vpn-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v2.L3InterfaceIpv4AddressList"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v2.L3InterfaceIpv6AddressList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Definition of vlan"/>
+                <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-key"/>
+                <xml-property name="dependentOn" value="l-interface"/>
+                <xml-property name="container" value="vlans"/>
+                <xml-property name="uriTemplate" value="/vlans/vlan/{vlan-interface}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3InterfaceIpv6AddressList">
+            <xml-root-element name="l3-interface-ipv6-address-list"/>
+            <java-attributes>
+                <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix length, 128 for single address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Inner VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Outer VLAN tag"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator of fixed or floating address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of the interface that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of subnet that address belongs to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPv6 Address Range"/>
+                <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id"/>
+                <xml-property name="dependentOn" value="vlan,l-interface"/>
+                <xml-property name="uriTemplate" value="/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Volumes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of ephemeral Block storage volumes."/>
+            </xml-properties>
+            <xml-root-element name="volumes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.onap.org.v2.Volume"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Volume">
+            <xml-root-element name="volume"/>
+            <java-attributes>
+                <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of block storage volume relative to the vserver."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Ephemeral Block storage volume."/>
+                <xml-property name="indexedProps" value="volume-id"/>
+                <xml-property name="dependentOn" value="vserver"/>
+                <xml-property name="container" value="volumes"/>
+                <xml-property name="uriTemplate" value="/volumes/volume/{volume-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Flavors">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack flavors."/>
+            </xml-properties>
+            <xml-root-element name="flavors"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.onap.org.v2.Flavor"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Flavor">
+            <xml-root-element name="flavor"/>
+            <java-attributes>
+                <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Flavor id, expected to be unique across cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Flavor name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Number of CPUs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Amount of memory"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Disk space"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Amount of ephemeral disk space"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="amount of swap space allocation"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack flavor."/>
+                <xml-property name="nameProps" value="flavor-name"/>
+                <xml-property name="indexedProps" value="flavor-name,flavor-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="flavors"/>
+                <xml-property name="uriTemplate" value="/flavors/flavor/{flavor-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Snapshots">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack snapshots"/>
+            </xml-properties>
+            <xml-root-element name="snapshots"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.onap.org.v2.Snapshot"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Snapshot">
+            <xml-root-element name="snapshot"/>
+            <java-attributes>
+                <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Snapshot name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Operating system architecture"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack snapshot"/>
+                <xml-property name="nameProps" value="snapshot-name"/>
+                <xml-property name="uniqueProps" value="snapshot-id"/>
+                <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="snapshots"/>
+                <xml-property name="uriTemplate" value="/snapshots/snapshot/{snapshot-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="GroupAssignments">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack group assignments"/>
+            </xml-properties>
+            <xml-root-element name="group-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.onap.org.v2.GroupAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="GroupAssignment">
+            <xml-root-element name="group-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Group id, expected to be unique across cloud-region."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group type - the type of group this instance refers to"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group name - name assigned to the group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group description - description of the group"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)."/>
+                <xml-property name="nameProps" value="group-name"/>
+                <xml-property name="indexedProps" value="group-id,group-type,group-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="group-assignments"/>
+                <xml-property name="uriTemplate" value="/group-assignments/group-assignment/{group-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Images">
+            <xml-properties>
+                <xml-property name="description" value="Collectio of Openstack images."/>
+            </xml-properties>
+            <xml-root-element name="images"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.onap.org.v2.Image"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Image">
+            <xml-root-element name="image"/>
+            <java-attributes>
+                <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Image id, expected to be unique across cloud region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Image name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Operating system architecture."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The common name of the operating system distribution in lowercase"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The operating system version as specified by the distributor."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v2.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack image."/>
+                <xml-property name="nameProps" value="image-name"/>
+                <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="images"/>
+                <xml-property name="uriTemplate" value="/images/image/{image-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Metadata">
+            <xml-properties>
+                <xml-property name="description" value="Collection of metadatum (key/value pairs)"/>
+            </xml-properties>
+            <xml-root-element name="metadata"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.onap.org.v2.Metadatum"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Metadatum">
+            <xml-root-element name="metadatum"/>
+            <java-attributes>
+                <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Key/value pairs"/>
+                <xml-property name="indexedProps" value="metaname"/>
+                <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model"/>
+                <xml-property name="container" value="metadata"/>
+                <xml-property name="uriTemplate" value="/metadata/metadatum/{metaname}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="DvsSwitches">
+            <xml-properties>
+                <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and GenericVnfs."/>
+            </xml-properties>
+            <xml-root-element name="dvs-switches"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.onap.org.v2.DvsSwitch"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="DvsSwitch">
+            <xml-root-element name="dvs-switch"/>
+            <java-attributes>
+                <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="DVS switch name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL used to reach the vcenter"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs.  A&amp;AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&amp;AI. "/>
+                <xml-property name="indexedProps" value="vcenter-url,switch-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="dvs-switches"/>
+                <xml-property name="uriTemplate" value="/dvs-switches/dvs-switch/{switch-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="NetworkProfiles">
+            <xml-properties>
+                <xml-property name="description" value="Collection of network profiles"/>
+            </xml-properties>
+            <xml-root-element name="network-profiles"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.onap.org.v2.NetworkProfile"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NetworkProfile">
+            <xml-root-element name="network-profile"/>
+            <java-attributes>
+                <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique name of network profile."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="communityString" name="community-string" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encrypted SNMP community string"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Network profile populated by SDN-GP for SNMP"/>
+                <xml-property name="indexedProps" value="nm-profile-name"/>
+                <xml-property name="container" value="network-profiles"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/network-profiles/network-profile/{nm-profile-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pservers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of compute hosts."/>
+            </xml-properties>
+            <xml-root-element name="pservers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.onap.org.v2.Pserver"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Pserver">
+            <xml-root-element name="pserver"/>
+            <java-attributes>
+                <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Value from executing hostname on the compute node."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="PTNII name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Number of cpus"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Disk size, in GBs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="RAM size, in MBs"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Fully-qualified domain name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Serial number, may be queried"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of Pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="internet topology of Pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="alternative pserver name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="purpose" name="purpose" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="purpose of pserver"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v2.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v2.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver."/>
+                <xml-property name="nameProps" value="pserver-name2"/>
+                <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2"/>
+                <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address"/>
+                <xml-property name="uniqueProps" value="hostname"/>
+                <xml-property name="container" value="pservers"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/pservers/pserver/{hostname}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical interfaces."/>
+            </xml-properties>
+            <xml-root-element name="p-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.onap.org.v2.PInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PInterface">
+            <xml-root-element name="p-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name that identifies the physical interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Nature of the services and connectivity on this port."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="CLEI or other specification for p-interface hardware."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role specification for p-interface hardware."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates the physical properties of the interface."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v2.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Physical interface (e.g., nic)"/>
+                <xml-property name="indexedProps" value="interface-name"/>
+                <xml-property name="dependentOn" value="vpls-pe,pserver,pnf"/>
+                <xml-property name="container" value="p-interfaces"/>
+                <xml-property name="uriTemplate" value="/p-interfaces/p-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="LagInterfaces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of link aggregate interfaces."/>
+            </xml-properties>
+            <xml-root-element name="lag-interfaces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.onap.org.v2.LagInterface"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LagInterface">
+            <xml-root-element name="lag-interface"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name that identifies the link aggregate interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v2.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Link aggregate interface"/>
+                <xml-property name="indexedProps" value="interface-name"/>
+                <xml-property name="dependentOn" value="generic-vnf,pserver,vpls-pe,pnf"/>
+                <xml-property name="container" value="lag-interfaces"/>
+                <xml-property name="uriTemplate" value="/lag-interfaces/lag-interface/{interface-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="OamNetworks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly.  Do not use for new purposes. "/>
+            </xml-properties>
+            <xml-root-element name="oam-networks"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.onap.org.v2.OamNetwork"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="OamNetwork">
+            <xml-root-element name="oam-network"/>
+            <java-attributes>
+                <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the network. Unique across a cloud-region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="cvlan-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="OAM network, to be deprecated shortly.  Do not use for new purposes. "/>
+                <xml-property name="nameProps" value="network-name"/>
+                <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="oam-networks"/>
+                <xml-property name="uriTemplate" value="/oam-networks/oam-network/{network-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="AvailabilityZones">
+            <xml-properties>
+                <xml-property name="description" value="Collection of availability zones"/>
+            </xml-properties>
+            <xml-root-element name="availability-zones"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v2.AvailabilityZone"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="AvailabilityZone">
+            <xml-root-element name="availability-zone"/>
+            <java-attributes>
+                <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the availability zone.  Unique across a cloud region"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of hypervisor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="State that indicates whether the availability zone should be used, etc.  Source of truth should define valid values."/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers"/>
+                <xml-property name="indexedProps" value="availability-zone-name"/>
+                <xml-property name="dependentOn" value="cloud-region"/>
+                <xml-property name="container" value="availability-zones"/>
+                <xml-property name="uriTemplate" value="/availability-zones/availability-zone/{availability-zone-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VirtualDataCenters">
+            <xml-properties>
+                <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+            </xml-properties>
+            <xml-root-element name="virtual-data-centers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.onap.org.v2.VirtualDataCenter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VirtualDataCenter">
+            <xml-root-element name="virtual-data-center"/>
+            <java-attributes>
+                <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of the vdc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the virtual data center"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context"/>
+                <xml-property name="nameProps" value="vdc-name"/>
+                <xml-property name="indexedProps" value="vdc-name,vdc-id"/>
+                <xml-property name="container" value="virtual-data-centers"/>
+                <xml-property name="namespace" value="cloud-infrastructure"/>
+                <xml-property name="uriTemplate" value="/cloud-infrastructure/virtual-data-centers/virtual-data-center/{vdc-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Business">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for business related constructs"/>
+            </xml-properties>
+            <xml-root-element name="business"/>
+            <java-attributes>
+                <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.onap.org.v2.Connectors"/>
+                <xml-element java-attribute="customers" name="customers" type="inventory.aai.onap.org.v2.Customers"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Connectors">
+            <xml-properties>
+                <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+            </xml-properties>
+            <xml-root-element name="connectors"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.onap.org.v2.Connector"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Connector">
+            <xml-root-element name="connector"/>
+            <java-attributes>
+                <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of resource instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v2.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets"/>
+                <xml-property name="indexedProps" value="resource-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="container" value="connectors"/>
+                <xml-property name="namespace" value="business"/>
+                <xml-property name="uriTemplate" value="/business/connectors/connector/{resource-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Customers">
+            <xml-properties>
+                <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information."/>
+            </xml-properties>
+            <xml-root-element name="customers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.onap.org.v2.Customer"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Customer">
+            <xml-root-element name="customer"/>
+            <java-attributes>
+                <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers."/>
+                        <xml-property name="defaultValue" value="CUST"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.onap.org.v2.ServiceSubscriptions"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="customer identifiers to provide linkage back to BSS information."/>
+                <xml-property name="nameProps" value="subscriber-name"/>
+                <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type"/>
+                <xml-property name="searchable" value="subscriber-name,global-customer-id"/>
+                <xml-property name="uniqueProps" value="global-customer-id"/>
+                <xml-property name="container" value="customers"/>
+                <xml-property name="namespace" value="business"/>
+                <xml-property name="uriTemplate" value="/business/customers/customer/{global-customer-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceSubscriptions">
+            <xml-properties>
+                <xml-property name="description" value="Collection of objects that group service instances."/>
+            </xml-properties>
+            <xml-root-element name="service-subscriptions"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.onap.org.v2.ServiceSubscription"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceSubscription">
+            <xml-root-element name="service-subscription"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This property will be deleted from A&amp;AI in the near future. Only stop gap solution."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.onap.org.v2.ServiceInstances">
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Object that group service instances."/>
+                <xml-property name="indexedProps" value="service-type"/>
+                <xml-property name="dependentOn" value="customer"/>
+                <xml-property name="container" value="service-subscriptions"/>
+                <xml-property name="uriTemplate" value="/service-subscriptions/service-subscription/{service-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceInstances">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service instances"/>
+            </xml-properties>
+            <xml-root-element name="service-instances"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.onap.org.v2.ServiceInstance"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceInstance">
+            <xml-root-element name="service-instance"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Uniquely identifies this instance of a service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="This field will store a name assigned to the service-instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates the total bandwidth to be used for this service."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL customers will use to access the vHN Portal."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="An identifier that customers assign to the location where this service is being used."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v2.Metadata"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Instance of a service"/>
+                <xml-property name="indexedProps" value="service-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id"/>
+                <xml-property name="nameProps" value="service-instance-name"/>
+                <xml-property name="searchable" value="service-instance-id"/>
+                <xml-property name="uniqueProps" value="service-instance-id"/>
+                <xml-property name="dependentOn" value="service-subscription"/>
+                <xml-property name="container" value="service-instances"/>
+                <xml-property name="uriTemplate" value="/service-instances/service-instance/{service-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceDesignAndCreation">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for objects managed by ASDC"/>
+            </xml-properties>
+            <xml-root-element name="service-design-and-creation"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.onap.org.v2.VnfImages"/>
+                <xml-element java-attribute="services" name="services" type="inventory.aai.onap.org.v2.Services"/>
+                <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.onap.org.v2.ServiceCapabilities"/>
+                <xml-element java-attribute="models" name="models" type="inventory.aai.onap.org.v2.Models"/>
+                <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.onap.org.v2.NamedQueries"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VnfImages">
+            <xml-properties>
+                <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+            </xml-properties>
+            <xml-root-element name="vnf-images"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.onap.org.v2.VnfImage"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VnfImage">
+            <xml-root-element name="vnf-image"/>
+            <java-attributes>
+                <xml-element java-attribute="attUuid" name="att-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of this asset"/>
+                        <xml-property name="dbAlias" value="vnf-image-uuid"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="application" name="application" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The application that the image instantiates."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The vendor of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The version of the application."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="selflink" name="selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers.  This is a kludge."/>
+                <xml-property name="indexedProps" value="application,att-uuid,application-vendor,application-version"/>
+                <xml-property name="uniqueProps" value="att-uuid"/>
+                <xml-property name="container" value="vnf-images"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/vnf-images/vnf-image/{att-uuid}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Services">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service model definitions.  Likely to be deprecated in favor of models from ASDC."/>
+            </xml-properties>
+            <xml-root-element name="services"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.onap.org.v2.Service"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Service">
+            <xml-root-element name="service"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description of the service"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="URL to endpoint where AAI can get more details"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="service version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Stand-in for service model definitions.  Likely to be deprecated in favor of models from ASDC."/>
+                <xml-property name="indexedProps" value="service-description,service-id"/>
+                <xml-property name="container" value="services"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/services/service/{service-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ServiceCapabilities">
+            <xml-properties>
+                <xml-property name="description" value="Collection of service capabilities."/>
+            </xml-properties>
+            <xml-root-element name="service-capabilities"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.onap.org.v2.ServiceCapability"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ServiceCapability">
+            <xml-root-element name="service-capability"/>
+            <java-attributes>
+                <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models.  No new use should be made of this."/>
+                <xml-property name="indexedProps" value="service-type,vnf-type"/>
+                <xml-property name="container" value="service-capabilities"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/service-capabilities/service-capability/{service-type}/{vnf-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Network">
+            <xml-properties>
+                <xml-property name="description" value="Namespace for network inventory resources."/>
+            </xml-properties>
+            <xml-root-element name="network"/>
+            <java-attributes>
+                <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.onap.org.v2.LogicalLinks"/>
+                <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.onap.org.v2.SitePairSets"/>
+                <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.onap.org.v2.VpnBindings"/>
+                <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.onap.org.v2.VplsPes"/>
+                <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.onap.org.v2.MulticastConfigurations"/>
+                <xml-element java-attribute="vces" name="vces" type="inventory.aai.onap.org.v2.Vces"/>
+                <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.onap.org.v2.Vnfcs"/>
+                <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.onap.org.v2.L3Networks"/>
+                <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.onap.org.v2.NetworkPolicies"/>
+                <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.onap.org.v2.GenericVnfs"/>
+                <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.onap.org.v2.LagLinks"/>
+                <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.onap.org.v2.Newvces"/>
+                <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.onap.org.v2.Pnfs"/>
+                <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.onap.org.v2.PhysicalLinks"/>
+                <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.onap.org.v2.IpsecConfigurations"/>
+                <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.onap.org.v2.RouteTableReferences"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LogicalLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of logical connections"/>
+            </xml-properties>
+            <xml-root-element name="logical-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.onap.org.v2.LogicalLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LogicalLink">
+            <xml-root-element name="logical-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of logical link, e.g., evc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4, v6, or ds for dual stack"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="For example, static or BGP"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indication of operational status of the logical link."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indication of the network use of the logical link."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="linkId" name="link-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of the logical-link, SDNC generates this."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points"/>
+                <xml-property name="indexedProps" value="link-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,link-id"/>
+                <xml-property name="uniqueProps" value="link-id"/>
+                <xml-property name="container" value="logical-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/logical-links/logical-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SitePairSets">
+            <xml-properties>
+                <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf"/>
+            </xml-properties>
+            <xml-root-element name="site-pair-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.onap.org.v2.SitePairSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SitePairSet">
+            <xml-root-element name="site-pair-set"/>
+            <java-attributes>
+                <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of site pair set."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.onap.org.v2.RoutingInstances"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Set of instances for probes used to measure service level agreements"/>
+                <xml-property name="indexedProps" value="site-pair-set-id"/>
+                <xml-property name="uniqueProps" value="site-pair-set-id"/>
+                <xml-property name="container" value="site-pair-sets"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/site-pair-sets/site-pair-set/{site-pair-set-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="RoutingInstances">
+            <xml-properties>
+                <xml-property name="description" value="set of probes related to generic-vnf routing instance"/>
+            </xml-properties>
+            <xml-root-element name="routing-instances"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.onap.org.v2.RoutingInstance"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RoutingInstance">
+            <xml-root-element name="routing-instance"/>
+            <java-attributes>
+                <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of routing instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="rpm owner"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.onap.org.v2.SitePairs"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="routing-instance-id"/>
+                <xml-property name="uniqueProps" value="routing-instance-id"/>
+                <xml-property name="dependentOn" value="site-pair-set"/>
+                <xml-property name="container" value="routing-instances"/>
+                <xml-property name="uriTemplate" value="/routing-instances/routing-instance/{routing-instance-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SitePairs">
+            <xml-properties>
+                <xml-property name="description" value="probe within a set"/>
+            </xml-properties>
+            <xml-root-element name="site-pairs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.onap.org.v2.SitePair"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SitePair">
+            <xml-root-element name="site-pair"/>
+            <java-attributes>
+                <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Prefix address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ip version, v4, v6"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The type of destinatination equipment. Could be Router, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.onap.org.v2.ClassesOfService"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="site-pair-id"/>
+                <xml-property name="uniqueProps" value="site-pair-id"/>
+                <xml-property name="dependentOn" value="routing-instance"/>
+                <xml-property name="container" value="site-pairs"/>
+                <xml-property name="uriTemplate" value="/site-pairs/site-pair/{site-pair-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="ClassesOfService">
+            <xml-properties>
+                <xml-property name="description" value="class-of-service of probe"/>
+            </xml-properties>
+            <xml-root-element name="classes-of-service"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.onap.org.v2.ClassOfService"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ClassOfService">
+            <xml-root-element name="class-of-service"/>
+            <java-attributes>
+                <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="type of probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="cos"/>
+                <xml-property name="dependentOn" value="site-pair"/>
+                <xml-property name="container" value="classes-of-service"/>
+                <xml-property name="uriTemplate" value="/classes-of-service/class-of-service/{cos}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VpnBindings">
+            <xml-root-element name="vpn-bindings"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.onap.org.v2.VpnBinding"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VpnBinding">
+            <xml-root-element name="vpn-binding"/>
+            <java-attributes>
+                <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="VPN ID, globally unique within A&amp;AI"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="VPN Name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Number used to identify a VPN, globally unique in the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList">
+                    <xml-properties>
+                        <xml-property name="description" value="l3-networks relate to vpn-bindings"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="VPN binding"/>
+                <xml-property name="nameProps" value="vpn-name"/>
+                <xml-property name="indexedProps" value="vpn-name,vpn-id,global-route-target"/>
+                <xml-property name="uniqueProps" value="vpn-id"/>
+                <xml-property name="container" value="vpn-bindings"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vpn-bindings/vpn-binding/{vpn-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VplsPes">
+            <xml-properties>
+                <xml-property name="description" value="Collection of VPLS Provider Edge routers"/>
+            </xml-properties>
+            <xml-root-element name="vpls-pes"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.onap.org.v2.VplsPe"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VplsPe">
+            <xml-root-element name="vpls-pe"/>
+            <java-attributes>
+                <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="Temporary location for stag to get to VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v2.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v2.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="VPLS Provider Edge routers."/>
+                <xml-property name="indexedProps" value="prov-status,equipment-name"/>
+                <xml-property name="container" value="vpls-pes"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vpls-pes/vpls-pe/{equipment-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="MulticastConfigurations">
+            <xml-properties>
+                <xml-property name="description" value="multicast configuration of generic-vnf ip-address"/>
+            </xml-properties>
+            <xml-root-element name="multicast-configurations"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.onap.org.v2.MulticastConfiguration"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="MulticastConfiguration">
+            <xml-root-element name="multicast-configuration"/>
+            <java-attributes>
+                <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of multicast configuration."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="protocol of multicast configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="rp type of multicast configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="multicast-configuration-id"/>
+                <xml-property name="uniqueProps" value="multicast-configuration-id"/>
+                <xml-property name="container" value="multicast-configurations"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/multicast-configurations/multicast-configuration/{multicast-configuration-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Vces">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma.  This object is deprecated."/>
+            </xml-properties>
+            <xml-root-element name="vces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.onap.org.v2.Vce"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vce">
+            <xml-root-element name="vce"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC.  Expect this to change as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="License key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network role being played by this VNF"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of VPE connected to this VCE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router.  Implied length of /64."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Entitlement resource uuid"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.onap.org.v2.PortGroups"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma.  This object is deprecated."/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id"/>
+                <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="container" value="vces"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="extends" value="vnf"/>
+                <xml-property name="uriTemplate" value="/network/vces/vce/{vnf-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PortGroups">
+            <xml-root-element name="port-groups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.onap.org.v2.PortGroup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PortGroup">
+            <xml-root-element name="port-group"/>
+            <java-attributes>
+                <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of the interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network name of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID for port group in vmware"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Likely to duplicate value of neutron network name"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.onap.org.v2.CvlanTags"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Used to capture the network interfaces of this VCE"/>
+                <xml-property name="nameProps" value="port-group-name"/>
+                <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name"/>
+                <xml-property name="dependentOn" value="vce"/>
+                <xml-property name="container" value="port-groups"/>
+                <xml-property name="uriTemplate" value="/port-groups/port-group/{interface-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="CvlanTags">
+            <xml-root-element name="cvlan-tags"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.onap.org.v2.CvlanTagEntry"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CvlanTagEntry">
+            <xml-root-element name="cvlan-tag-entry"/>
+            <java-attributes>
+                <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="See mis-na-virtualization-platform.yang"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="dependentOn" value="port-group"/>
+                <xml-property name="indexedProps" value="cvlan-tag"/>
+                <xml-property name="container" value="cvlan-tags"/>
+                <xml-property name="uriTemplate" value="/cvlan-tags/cvlan-tag/{cvlan-tag-cvlan-tag}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="Vnfcs">
+            <xml-properties>
+                <xml-property name="description" value="virtual network components associated with a vserver from application controller."/>
+            </xml-properties>
+            <xml-root-element name="vnfcs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.onap.org.v2.Vnfc"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Vnfc">
+            <xml-root-element name="vnfc"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of vnfc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="function code"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="type"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="prov status of this vnfc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Oam V4 vip address of this vnfc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group notation of VNFC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation"/>
+                <xml-property name="container" value="vnfcs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/vnfcs/vnfc/{vnfc-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="L3Networks">
+            <xml-root-element name="l3-networks"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.onap.org.v2.L3Network"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="L3Network">
+            <xml-root-element name="l3-network"/>
+            <java-attributes>
+                <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Network ID, should be uuid. Unique across A&amp;AI."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkName" name="network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the network, governed by some naming convention.."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkType" name="network-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the network - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Role the network plans - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network technology - who defines these values?"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron network id of this Interface"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isBoundToVpn" name="is-bound-to-vpn" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Set to true if bound to VPN"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="network role instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contrail FQDN for the network"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name associated with the physical network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="boolean indicatating whether or not network is a provider network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="boolean indicatating whether or not network is a shared network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="boolean indicatating whether or not network is an external network."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.onap.org.v2.Subnets"/>
+                <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.onap.org.v2.CtagAssignments"/>
+                <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.onap.org.v2.SegmentationAssignments"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList">
+                    <xml-properties>
+                        <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding"/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Generic network definition"/>
+                <xml-property name="nameProps" value="network-name"/>
+                <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-network-fqdn"/>
+                <xml-property name="uniqueProps" value="network-id"/>
+                <xml-property name="container" value="l3-networks"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/l3-networks/l3-network/{network-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="NetworkPolicies">
+            <xml-root-element name="network-policies"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.onap.org.v2.NetworkPolicy"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="NetworkPolicy">
+            <xml-root-element name="network-policy"/>
+            <java-attributes>
+                <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID representing unique key to this instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contrail FQDN for the policy"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID for the openStack Heat instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="nameProps" value="network-policy-fqdn"/>
+                <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn"/>
+                <xml-property name="uniqueProps" value="network-policy-id"/>
+                <xml-property name="container" value="network-policies"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/network-policies/network-policy/{network-policy-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="CtagAssignments">
+            <xml-root-element name="ctag-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.onap.org.v2.CtagAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="CtagAssignment">
+            <xml-root-element name="ctag-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="id."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="vlan-id-inner"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="ctag-assignments"/>
+                <xml-property name="uriTemplate" value="/ctag-assignments/ctag-assignment/{vlan-id-inner}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Subnets">
+            <xml-root-element name="subnets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.onap.org.v2.Subnet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Subnet">
+            <xml-root-element name="subnet"/>
+            <java-attributes>
+                <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Subnet ID, should be UUID."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name associated with the subnet."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Neutron id of this subnet"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="gateway ip address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="network start address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="cidr mask"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ip version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="dhcpEnabled" name="dhcp-enabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="dhcp enabled"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the start address reserved for use by dhcp"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the last address reserved for use by dhcp"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="indexedProps" value="subnet-id,subnet-name"/>
+                <xml-property name="nameProps" value="subnet-name"/>
+                <xml-property name="uniqueProps" value="subnet-id"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="subnets"/>
+                <xml-property name="uriTemplate" value="/subnets/subnet/{subnet-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="GenericVnfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of VNFs"/>
+            </xml-properties>
+            <xml-root-element name="generic-vnfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.onap.org.v2.GenericVnf"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="GenericVnf">
+            <xml-root-element name="generic-vnf"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier of service from ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="License key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, used by MSO."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of managed by company or customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 Loopback address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 management address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long">
+                    <xml-properties>
+                        <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="details regarding the generic-vnf operation"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates whether generic-vnf access uses SSH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="as-number of the VNF"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="represents sub zone of the rr plane"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v2.LInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v2.LagInterfaces"/>
+                <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.onap.org.v2.VfModules"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="General purpose VNF"/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version"/>
+                <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="container" value="generic-vnfs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="extends" value="vnf"/>
+                <xml-property name="uriTemplate" value="/network/generic-vnfs/generic-vnf/{vnf-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VfModules">
+            <xml-properties>
+                <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs"/>
+            </xml-properties>
+            <xml-root-element name="vf-modules"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.onap.org.v2.VfModule"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VfModule">
+            <xml-root-element name="vf-module"/>
+            <java-attributes>
+                <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique ID of vf-module."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of vf-module"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="isBaseVfModule" name="is-base-vf-module" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="used to indicate whether or not this object is base vf module"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model id for this resource or service model."/>
+                        <xml-property name="dbAlias" value="model-invariant-id-local"/>
+                        <xml-property name="requires" value="persona-model-version"/>
+                        <xml-property name="visibility" value="deployment"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="deployment"/>
+                        <xml-property name="requires" value="persona-model-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC model version for this resource or service model."/>
+                        <xml-property name="visibility" value="internal"/>
+                        <xml-property name="dbAlias" value="model-version-id-local"/>
+                        <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&amp;AI widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&amp;AI version of the widget."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="the Contrail unique ID for a service-instance"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="a deployment unit of VNFCs"/>
+                <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-service-instance-fqdn"/>
+                <xml-property name="dependentOn" value="generic-vnf"/>
+                <xml-property name="container" value="vf-modules"/>
+                <xml-property name="uriTemplate" value="/vf-modules/vf-module/{vf-module-id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="LagLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of link aggregation connections"/>
+            </xml-properties>
+            <xml-root-element name="lag-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.onap.org.v2.LagLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="LagLink">
+            <xml-root-element name="lag-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Alphabetical concatenation of lag-interface names"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="LAG links can connect lag-interfaces"/>
+                <xml-property name="indexedProps" value="link-name"/>
+                <xml-property name="container" value="lag-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/lag-links/lag-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Newvces">
+            <xml-properties>
+                <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+            </xml-properties>
+            <xml-root-element name="newvces"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.onap.org.v2.Newvce"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Newvce">
+            <xml-root-element name="newvce"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Alternate name of VNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource.  This field has been overloaded and clients should expect changes                  to occur in the future to this field as ASDC matures."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicator for whether the resource is considered operational"/>
+                        <xml-property name="dbAlias" value="operational-status"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="License key"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Client should send valid enumerated value."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 Loopback0 address"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v2.LInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf.  This object will be retired with vce."/>
+                <xml-property name="nameProps" value="vnf-name"/>
+                <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2"/>
+                <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2"/>
+                <xml-property name="uniqueProps" value="vnf-id2"/>
+                <xml-property name="container" value="newvces"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/newvces/newvce/{vnf-id2}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="Pnfs">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Physical Network Functions."/>
+            </xml-properties>
+            <xml-root-element name="pnfs"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.onap.org.v2.Pnf"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Pnf">
+            <xml-root-element name="pnf"/>
+            <java-attributes>
+                <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="unique name of Physical Network Function."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="name of Physical Network Function."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="source of name2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="id of pnf"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment type.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment vendor.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Equipment model.  Source of truth should define valid values."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="identifier of managed by company or customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="orchestration-status is the status of orchestration on the PNF."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean">
+                    <xml-properties>
+                        <xml-property name="defaultValue" value="false"/>
+                        <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v2.PInterfaces"/>
+                <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v2.LagInterfaces"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world."/>
+                <xml-property name="indexedProps" value="pnf-name,orchestration-status"/>
+                <xml-property name="uniqueProps" value="pnf-name"/>
+                <xml-property name="container" value="pnfs"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/pnfs/pnf/{pnf-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="PhysicalLinks">
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+            </xml-properties>
+            <xml-root-element name="physical-links"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.onap.org.v2.PhysicalLink"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PhysicalLink">
+            <xml-root-element name="physical-link"/>
+            <java-attributes>
+                <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the numeric part of the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Captures the units corresponding to the speed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Circuit it"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Dual access mode (e.g., primary, secondary"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="To provide information on who manages this circuit. A&amp;AI or 3rd party transport provider"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the service Provider on this link."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Collection of physical connections, typically between p-interfaces"/>
+                <xml-property name="indexedProps" value="circuit-id,link-name"/>
+                <xml-property name="alternateKeys1" value="circuit-id"/>
+                <xml-property name="container" value="physical-links"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/physical-links/physical-link/{link-name}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="VigServers">
+            <xml-root-element name="vig-servers"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.onap.org.v2.VigServer"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="VigServer">
+            <xml-root-element name="vig-server"/>
+            <java-attributes>
+                <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v4 IP of the vig server"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="v6 IP of the vig server"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607"/>
+                <xml-property name="indexedProps" value="vig-address-type"/>
+                <xml-property name="dependentOn" value="ipsec-configuration"/>
+                <xml-property name="container" value="vig-servers"/>
+                <xml-property name="uriTemplate" value="/vig-servers/vig-server/{vig-address-type}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="IpsecConfigurations">
+            <xml-root-element name="ipsec-configurations"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.onap.org.v2.IpsecConfiguration"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="IpsecConfiguration">
+            <xml-root-element name="ipsec-configuration"/>
+            <java-attributes>
+                <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="UUID of this configuration"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="can offer a shared DMZ or a DMZ specific to a customer"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Network address of shared DMZ"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="can be 1 or 2"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc,?aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="pre-shared key for the above group name "/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Lifetime for IKEv1 SA"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="md5, sha1, sha256, sha384"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc,?aes-192-cbc, aes-265-cbc"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Life time for IPSec SA"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="enable PFS or not"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="user ID for xAuth, sm-user, ,nmteHostName"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="The time between DPD probe"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+                <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.onap.org.v2.VigServers"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C"/>
+                <xml-property name="indexedProps" value="ipsec-configuration-id"/>
+                <xml-property name="uniqueProps" value="ipsec-configuration-id"/>
+                <xml-property name="container" value="ipsec-configurations"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/ipsec-configurations/ipsec-configuration/{ipsec-configuration-id}"/>
+            </xml-properties>
+        </java-type>
+
+
+        <java-type name="NotificationEvent">
+            <xml-root-element name="notification-event"/>
+            <java-attributes>
+                <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String"/>
+                <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.onap.org.v2.NotificationEventHeader"/>
+                <xml-any-element java-attribute="entity"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="NotificationEventHeader">
+            <xml-root-element name="notification-event-header"/>
+            <java-attributes>
+                <xml-element java-attribute="id" name="id" type="java.lang.String"/>
+                <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String"/>
+                <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String"/>
+                <xml-element java-attribute="domain" name="domain" type="java.lang.String"/>
+                <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String"/>
+                <xml-element java-attribute="severity" name="severity" type="java.lang.String"/>
+                <xml-element java-attribute="eventType" name="event-type" type="java.lang.String"/>
+                <xml-element java-attribute="version" name="version" type="java.lang.String"/>
+                <xml-element java-attribute="action" name="action" type="java.lang.String"/>
+                <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String"/>
+                <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String"/>
+                <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String"/>
+                <xml-element java-attribute="status" name="status" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="AaiInternal">
+            <xml-root-element name="aai-internal"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.onap.org.v2.ReservedPropNames"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.onap.org.v2.EdgePropNames"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="ReservedPropNames">
+            <xml-properties>
+                <xml-property name="description" value="Internal map to define some reserved properties of a vertex"/>
+                <xml-property name="uniqueProps" value="aai-unique-key"/>
+                <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri"/>
+            </xml-properties>
+            <xml-root-element name="reserved-prop-names"/>
+            <java-attributes>
+                <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String"/>
+                <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String"/>
+                <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long"/>
+                <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String"/>
+                <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long"/>
+                <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String"/>
+                <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="EdgePropNames">
+            <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now -->
+            <xml-properties>
+                <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules"/>
+                <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV"/>
+            </xml-properties>
+            <xml-root-element name="edge-prop-names"/>
+            <java-attributes>
+                <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String"/>
+                <xml-element java-attribute="direction" name="direction" type="java.lang.String"/>
+                <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String"/>
+                <xml-element java-attribute="containsOtherV" name="contains-other-v" type="java.lang.String"/>
+                <xml-element java-attribute="deleteOtherV" name="delete-other-v" type="java.lang.String"/>
+                <xml-element java-attribute="svcinfra" name="SVC-INFRA" type="java.lang.String"/>
+                <xml-element java-attribute="preventDelete" name="prevent-delete" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Models">
+            <xml-properties>
+                <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models"/>
+            </xml-properties>
+            <xml-root-element name="models"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.onap.org.v2.Model"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Model">
+            <xml-properties>
+                <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models"/>
+                <xml-property name="nameProps" value="model-name,model-type"/>
+                <xml-property name="indexedProps" value="model-name-version-id,model-type,model-name,model-id,model-version"/>
+                <xml-property name="alternateKeys1" value="model-id,model-version"/>
+                <xml-property name="uniqueProps" value="model-name-version-id"/>
+                <xml-property name="container" value="models"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/models/model/{model-name-version-id}"/>
+            </xml-properties>
+            <xml-root-element name="model"/>
+            <java-attributes>
+                <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the model, which can change from version to version."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Invariant unique ID which does not change from version to version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Version"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Description"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v2.ModelElements"/>
+                <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v2.Metadata"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelElements">
+            <xml-root-element name="model-elements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.onap.org.v2.ModelElement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelElement">
+            <xml-properties>
+                <xml-property name="description" value="Defines how other models combine to make up a higher-level model."/>
+                <xml-property name="uniqueProps" value="model-element-uuid"/>
+                <xml-property name="indexedProps" value="model-element-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="model-elements"/>
+                <xml-property name="uriTemplate" value="/model-elements/model-element/{model-element-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="model-element"/>
+            <java-attributes>
+                <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="How many of this type of element are required/allowed"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String">
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v2.ModelElements">
+                    <xml-properties>
+                        <xml-property name="description" value="Defines how other models combine to make up a higher-level model"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.onap.org.v2.ModelConstraints">
+                    <xml-properties>
+                        <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelConstraints">
+            <xml-root-element name="model-constraints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.onap.org.v2.ModelConstraint"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelConstraint">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="model-constraint-uuid"/>
+                <xml-property name="indexedProps" value="model-constraint-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="model-constraints"/>
+                <xml-property name="uriTemplate" value="/model-constraints/model-constraint/{model-constraint-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="model-constraint"/>
+            <java-attributes>
+                <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.onap.org.v2.ConstrainedElementSets"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ConstrainedElementSets">
+            <xml-root-element name="constrained-element-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.onap.org.v2.ConstrainedElementSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ConstrainedElementSet">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="constrained-element-set-uuid"/>
+                <xml-property name="indexedProps" value="constrained-element-set-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="constrained-element-sets"/>
+                <xml-property name="uriTemplate" value="/constrained-element-sets/constrained-element-set/{constrained-element-set-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="constrained-element-set"/>
+            <java-attributes>
+                <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.onap.org.v2.ElementChoiceSets"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ElementChoiceSets">
+            <xml-root-element name="element-choice-sets"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.onap.org.v2.ElementChoiceSet"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ElementChoiceSet">
+            <xml-properties>
+                <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements."/>
+                <xml-property name="uniqueProps" value="element-choice-set-uuid"/>
+                <xml-property name="indexedProps" value="element-choice-set-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="element-choice-sets"/>
+                <xml-property name="uriTemplate" value="/element-choice-sets/element-choice-set/{element-choice-set-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="element-choice-set"/>
+            <java-attributes>
+                <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v2.ModelElements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueries">
+            <xml-root-element name="named-queries"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v2.NamedQuery"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQuery">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="nameProps" value="named-query-name"/>
+                <xml-property name="uniqueProps" value="named-query-uuid"/>
+                <xml-property name="indexedProps" value="named-query-uuid,named-query-name"/>
+                <xml-property name="container" value="named-queries"/>
+                <xml-property name="namespace" value="service-design-and-creation"/>
+                <xml-property name="uriTemplate" value="/service-design-and-creation/named-queries/named-query/{named-query-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="named-query"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true"/>
+                <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String">
+                    <xml-element-wrapper name="required-input-params"/>
+                </xml-element>
+                <xml-element java-attribute="description" name="description" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v2.NamedQueryElements"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueryElements">
+            <xml-root-element name="named-query-elements"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.onap.org.v2.NamedQueryElement"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="NamedQueryElement">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="named-query-element-uuid"/>
+                <xml-property name="indexedProps" value="named-query-element-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="named-query-elements"/>
+                <xml-property name="uriTemplate" value="/named-query-elements/named-query-element/{named-query-element-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="named-query-element"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String"/>
+                <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String"/>
+                <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v2.NamedQueryElements"/>
+                <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.onap.org.v2.RelatedLookups"/>
+                <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.onap.org.v2.PropertyConstraints"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedLookups">
+            <xml-root-element name="related-lookups"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.onap.org.v2.RelatedLookup"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RelatedLookup">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="related-lookup-uuid"/>
+                <xml-property name="indexedProps" value="related-lookup-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="related-lookups"/>
+                <xml-property name="uriTemplate" value="/related-lookups/related-lookup/{related-lookup-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="related-lookup"/>
+            <java-attributes>
+                <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String"/>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PropertyConstraints">
+            <xml-root-element name="property-constraints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.onap.org.v2.PropertyConstraint"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="PropertyConstraint">
+            <xml-properties>
+                <xml-property name="description" value="TBD"/>
+                <xml-property name="uniqueProps" value="property-constraint-uuid"/>
+                <xml-property name="indexedProps" value="property-constraint-uuid"/>
+                <xml-property name="allowDirectRead" value="true"/>
+                <xml-property name="allowDirectWrite" value="false"/>
+                <xml-property name="container" value="property-constraints"/>
+                <xml-property name="uriTemplate" value="/property-constraints/property-constraint/{property-constraint-uuid}"/>
+            </xml-properties>
+            <xml-root-element name="property-constraint"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="autoGenerateUuid" value="true"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="property-name" name="property-name" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="property-value" name="property-value" required="true" type="java.lang.String"/>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ModelAndNamedQuerySearch">
+            <xml-properties>
+                <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="model-and-named-query-search"/>
+            <java-attributes>
+                <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.onap.org.v2.QueryParameters"/>
+                <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.onap.org.v2.InstanceFilters"/>
+                <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="QueryParameters">
+            <xml-properties>
+                <xml-property name="description" value="QueryParameters for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="query-parameters"/>
+            <java-attributes>
+                <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v2.NamedQuery"/>
+                <xml-element java-attribute="model" name="model" type="inventory.aai.onap.org.v2.Model"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceFilters">
+            <xml-properties>
+                <xml-property name="description" value="InstanceFilters for performing a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="instance-filters"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.onap.org.v2.InstanceFilter"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InstanceFilter">
+            <xml-properties>
+                <xml-property name="description" value="InstanceFilter for performing a named-query or model query"/>
+                <xml-property name="container" value="instance-filters"/>
+            </xml-properties>
+            <xml-root-element name="instance-filter"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="Properties">
+            <xml-properties>
+                <xml-property name="description" value="Property holder for query properties or instance properties"/>
+            </xml-properties>
+            <xml-root-element name="properties"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ResponseList">
+            <xml-properties>
+                <xml-property name="description" value="Response container for the results of a named-query or model query"/>
+            </xml-properties>
+            <xml-root-element name="response-list"/>
+            <java-attributes>
+                <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v2.InventoryResponseItems"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryResponseItems">
+            <xml-properties>
+                <xml-property name="description" value="Container for inventory items in response list"/>
+                <xml-property name="container" value="response-list"/>
+            </xml-properties>
+            <xml-root-element name="inventory-response-items"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.onap.org.v2.InventoryResponseItem"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="InventoryResponseItem">
+            <xml-properties>
+                <xml-property name="description" value="Inventory item for response list"/>
+                <xml-property name="container" value="inventory-response-items"/>
+            </xml-properties>
+            <xml-root-element name="inventory-response-item"/>
+            <java-attributes>
+                <xml-element java-attribute="modelName" name="model-name" type="java.lang.String"/>
+                <xml-any-element java-attribute="item"/>
+                <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.onap.org.v2.ExtraProperties"/>
+                <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v2.InventoryResponseItems"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ExtraProperties">
+            <xml-properties>
+                <xml-property name="description" value="Extra properties for inventory item for response list"/>
+            </xml-properties>
+            <xml-root-element name="extra-properties"/>
+            <java-attributes>
+                <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.onap.org.v2.ExtraProperty"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="ExtraProperty">
+            <xml-root-element name="extra-property"/>
+            <java-attributes>
+                <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String"/>
+                <xml-any-element java-attribute="propertyValue" lax="true" name="property-value"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RouteTableReferences">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack route table references"/>
+            </xml-properties>
+            <xml-root-element name="route-table-references"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.onap.org.v2.RouteTableReference"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="RouteTableReference">
+            <xml-root-element name="route-table-reference"/>
+            <java-attributes>
+                <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="FQDN entry in the route table."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+
+            <xml-properties>
+                <xml-property name="description" value="Openstack route table reference."/>
+                <xml-property name="nameProps" value="route-table-reference-fqdn"/>
+                <xml-property name="uniqueProps" value="route-table-reference-id"/>
+                <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn"/>
+                <xml-property name="container" value="route-table-references"/>
+                <xml-property name="namespace" value="network"/>
+                <xml-property name="uriTemplate" value="/network/route-table-references/route-table-reference/{route-table-reference-id}"/>
+            </xml-properties>
+        </java-type>
+
+        <java-type name="SegmentationAssignments">
+            <xml-properties>
+                <xml-property name="description" value="Collection of openstack segmentation assignments"/>
+            </xml-properties>
+            <xml-root-element name="segmentation-assignments"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.onap.org.v2.SegmentationAssignment"/>
+            </java-attributes>
+        </java-type>
+
+        <java-type name="SegmentationAssignment">
+            <xml-root-element name="segmentation-assignment"/>
+            <java-attributes>
+                <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Concurrency value"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v2.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Openstack segmentation assignment."/>
+                <xml-property name="indexedProps" value="segmentation-id"/>
+                <xml-property name="dependentOn" value="l3-network"/>
+                <xml-property name="container" value="segmentation-assignments"/>
+                <xml-property name="uriTemplate" value="/segmentation-assignments/segmentation-assignment/{segmentation-id}"/>
+            </xml-properties>
+        </java-type>
+        <java-type name="Vnf">
+            <xml-root-element name="vnf"/>
+            <java-attributes>
+                <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true">
+                    <xml-properties>
+                        <xml-property name="description" value="Unique id of VNF.  This is unique across the graph."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Abstract vnf class"/>
+                <xml-property name="indexedProps" value="vnf-id"/>
+                <xml-property name="uniqueProps" value="vnf-id"/>
+                <xml-property name="inheritors" value="vce,generic-vnf"/>
+                <xml-property name="abstract" value="true"/>
+            </xml-properties>
+        </java-type>
+    </java-types>
+</xml-bindings>
\ No newline at end of file
index 2b801e2..fe87a36 100644 (file)
@@ -8,8 +8,8 @@ schema.nodes.exclusion.list=
 schema.edges.exclusion.list=
 
 # Schema Version Configuration
-schema.version.list=v8,v9,v10,v11,v12,v13,v14
-schema.version.depth.start=v9
+schema.version.list=v10,v11,v12,v13,v14
+schema.version.depth.start=v10
 schema.version.related.link.start=v10
 schema.version.app.root.start=v11
 schema.version.namespace.change.start=v11
diff --git a/aai-schema-ingest/.classpath b/aai-schema-ingest/.classpath
new file mode 100644 (file)
index 0000000..0f930ed
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" output="target/classes" path="src/main/java">
+               <attributes>
+                       <attribute name="optional" value="true"/>
+                       <attribute name="maven.pomderived" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+               <attributes>
+                       <attribute name="optional" value="true"/>
+                       <attribute name="maven.pomderived" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+               <attributes>
+                       <attribute name="maven.pomderived" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+               <attributes>
+                       <attribute name="maven.pomderived" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+               <attributes>
+                       <attribute name="maven.pomderived" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+               <attributes>
+                       <attribute name="maven.pomderived" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry kind="output" path="target/classes"/>
+</classpath>
index 94bc6da..50738df 100644 (file)
@@ -68,7 +68,7 @@ public class NodesConfiguration {
             LOGGER.info("Translator is SchemaServiceTranslator");
             translators.add(schemaConfiguration.schemaServiceTranslator());
         } else {
-            LOGGER.info("Translator is SchemaServiceTranslator");
+            LOGGER.info("Translator is ConfigTranslator");
             translators.add(translatorConfiguration.configTranslator);
         }
         return translators;
index 7122534..213ff59 100644 (file)
@@ -59,7 +59,7 @@ import static com.jayway.jsonpath.Filter.filter;
 @Component
 public class EdgeIngestor {
     private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(EdgeIngestor.class);
-    private Map<SchemaVersion, List<DocumentContext>> versionJsonFilesMap;
+    private Map<SchemaVersion, List<DocumentContext>> versionJsonFilesMap = new TreeMap<>();
     private static final String READ_START = "$.rules.[?]";
     private static final String READ_ALL_START = "$.rules.*";
     private SchemaVersions schemaVersions;
@@ -94,7 +94,7 @@ public class EdgeIngestor {
             }
         }
         if (versionJsonFilesMap.isEmpty() || schemaVersions==null ) {
-            throw new ExceptionInInitializerError();
+            throw new ExceptionInInitializerError("EdgeIngestor could not ingest edgerules");
         }
     }
 
index d6fec83..c25fc78 100644 (file)
@@ -60,26 +60,26 @@ public class EdgeRuleQuery {
 
         private static final String FROM_ONLY = "FromOnly";
 
-        //required 
+        //required
         private String nodeA;
-        
+
         //optional - null will translate to any value of the param
-        private String nodeB = null; 
+        private String nodeB = null;
         private String label = null;
         private EdgeType type = null;
         private AAIDirection direction = null;
         private boolean isPrivate = false;
         private SchemaVersion version = null;
-        
+
         public Builder(String nodeA) {
             this.nodeA = nodeA;
         }
-        
+
         public Builder(String nodeA, String nodeB) {
             this.nodeA = nodeA;
             this.nodeB = nodeB;
         }
-        
+
         private String getFirstNodeType() {
             return nodeA;
         }
@@ -87,7 +87,7 @@ public class EdgeRuleQuery {
             this.nodeB = FROM_ONLY;
             return this;
         }
-        
+
         private String getSecondNodeType() {
             return nodeB;
         }
@@ -105,35 +105,35 @@ public class EdgeRuleQuery {
             this.nodeA = TO_ONLY;
             return this;
         }
-        
+
         public Builder label(String label) {
             this.label = label;
             return this;
         }
-        
+
         private String getLabel() {
             return label;
         }
-        
+
         public Builder edgeType(EdgeType type) {
             this.type = type;
             return this;
         }
-        
+
         private EdgeType getEdgeType() {
             return type;
         }
-        
+
 
         public Builder direction(AAIDirection direction) {
             this.direction = direction;
             return this;
         }
-        
+
         private AAIDirection getDirection() {
             return direction;
         }
-                
+
         public Builder version(SchemaVersion version) {
             this.version = version;
             return this;
@@ -151,12 +151,12 @@ public class EdgeRuleQuery {
         private Optional<SchemaVersion> getSchemaVersion() {
             return Optional.ofNullable(version);
         }
-        
+
         public EdgeRuleQuery build() {
             return new EdgeRuleQuery(this);
         }
     }
-    
+
     private EdgeRuleQuery(Builder builder) {
         this.v = builder.getSchemaVersion();
         this.nodeA = builder.getFirstNodeType();
@@ -165,7 +165,7 @@ public class EdgeRuleQuery {
         this.type = builder.getEdgeType();
         this.direction = builder.getDirection();
         this.isPrivate = builder.isPrivate();
-        
+
         //will cover from A to B case
         List<Predicate> criteriaFromTo = new ArrayList<>();
         //Special logic to allow for A to B case only
@@ -187,8 +187,8 @@ public class EdgeRuleQuery {
             criteriaFromTo.add(labelPred);
             criteriaToFrom.add(labelPred);
         }
-        
-        if (builder.getEdgeType() != null) {
+
+        if (builder.getEdgeType() != null && builder.getEdgeType() != EdgeType.ALL) {
             Predicate typePred = addType(builder.getEdgeType());
             criteriaFromTo.add(typePred);
             criteriaToFrom.add(typePred);
@@ -199,7 +199,7 @@ public class EdgeRuleQuery {
             criteriaFromTo.add(privatePredicate);
             criteriaToFrom.add(privatePredicate);
         }
-        
+
         if (builder.getDirection() != null) {
             Predicate directionPred = addDirection(builder.getDirection());
             criteriaFromTo.add(directionPred);
@@ -213,14 +213,14 @@ public class EdgeRuleQuery {
             this.filter = filter(criteriaFromTo).or(filter(criteriaToFrom));
         }
     }
-    
+
     private Predicate buildToFromPart(String from, String to) {
         if (from == null && to == null) { //shouldn't ever happen though
             throw new IllegalStateException("must have at least one node defined");
         }
-        
+
         Predicate p;
-        
+
         if (to == null) {
             p = where(EdgeField.FROM.toString()).is(from);
         } else if (from == null) {
@@ -228,14 +228,14 @@ public class EdgeRuleQuery {
         } else {
             p = where(EdgeField.FROM.toString()).is(from).and(EdgeField.TO.toString()).is(to);
         }
-        
+
         return p;
     }
-    
+
     private Predicate addLabel(String label) {
         return where(EdgeField.LABEL.toString()).is(label);
     }
-    
+
     private Predicate addType(EdgeType type) {
         if (type == EdgeType.COUSIN) {
             return where(EdgeProperty.CONTAINS.toString()).is(AAIDirection.NONE.toString());
@@ -243,7 +243,7 @@ public class EdgeRuleQuery {
             return where(EdgeProperty.CONTAINS.toString()).ne(AAIDirection.NONE.toString());
         }
     }
-        
+
     private Predicate addDirection(AAIDirection direction) {
         if (direction == AAIDirection.OUT) {
             return where(EdgeField.DIRECTION.toString()).in(AAIDirection.OUT.toString(), AAIDirection.BOTH.toString());
@@ -256,7 +256,7 @@ public class EdgeRuleQuery {
         }
         return where(EdgeField.DIRECTION.toString()).is(AAIDirection.NONE.toString());
     }
-    
+
     /**
      * Provides the JsonPath filter for actually querying the edge rule schema files
      * @return Filter
@@ -264,24 +264,24 @@ public class EdgeRuleQuery {
     public Filter getFilter() {
         return this.filter;
     }
-    
+
     /**
      * Gets the first node type given for the query.
-     * 
+     *
      * ie, If you called Builder(A,B) this would return A,
      * if you called Builder(B,A), it would return B,
      * if you called Builder(A), it would return A.
-     * 
+     *
      * This is to maintain backwards compatibility with the
      * EdgeRules API which flipped the direction of
      * the result EdgeRule to match the input directionality.
-     * 
+     *
      * @return String first node type of the query
      */
     public String getFromType() {
         return this.nodeA;
     }
-    
+
     /**
      * So the Ingestor knows which version of the rules to search
      * @return the Version
@@ -289,21 +289,21 @@ public class EdgeRuleQuery {
     public Optional<SchemaVersion> getVersion() {
         return this.v;
     }
-    
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        
+
         sb.append("EdgeRuleQuery with filter params node type: ").append(nodeA);
-        
+
         if (nodeB != null) {
             sb.append(", node type: ").append(nodeB);
         }
-        
+
         if (label != null) {
             sb.append(", label: ").append(label);
-        } 
-        
+        }
+
         sb.append(", type: ");
         if (type != null) {
             sb.append(type.toString());
index 3ae59ab..4662f86 100644 (file)
@@ -21,5 +21,6 @@ package org.onap.aai.edges.enums;
 
 public enum EdgeType {
        COUSIN,
-       TREE;
+       TREE,
+       ALL;
 }
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java b/aai-schema-ingest/src/main/java/org/onap/aai/edges/exceptions/EdgeIngestorException.java
new file mode 100644 (file)
index 0000000..96fd65c
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-18 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.aai.edges.exceptions;
+
+public class EdgeIngestorException extends Exception {
+    public EdgeIngestorException(String msg) {
+        super(msg);
+    }
+
+    public EdgeIngestorException(Throwable throwable){
+        super(throwable);
+    }
+}
index 1945a1e..69cd51a 100644 (file)
@@ -98,7 +98,7 @@ public class NodeIngestor {
             }
         }
         if (versionContextMap.isEmpty() || schemaPerVersion.isEmpty() || typesPerVersion.isEmpty()) {
-            throw new ExceptionInInitializerError();
+            throw new ExceptionInInitializerError("NodeIngestor could not ingest schema");
         }
     }
 
diff --git a/aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java b/aai-schema-ingest/src/main/java/org/onap/aai/nodes/exceptions/NodeIngestorException.java
new file mode 100644 (file)
index 0000000..adaf538
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-18 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.aai.nodes.exceptions;
+
+public class NodeIngestorException extends Exception {
+    public NodeIngestorException(String msg) {
+        super(msg);
+    }
+
+    public NodeIngestorException(Throwable throwable){
+        super(throwable);
+    }
+}
diff --git a/aai-utils/LICENSE.txt b/aai-utils/LICENSE.txt
new file mode 100644 (file)
index 0000000..eb76ea4
--- /dev/null
@@ -0,0 +1,18 @@
+============LICENSE_START=======================================================
+org.onap.aai
+================================================================================
+Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+Copyright © 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.
+============LICENSE_END=========================================================
diff --git a/pom.xml b/pom.xml
index 1a3290c..68148a6 100644 (file)
--- a/pom.xml
+++ b/pom.xml
         <aai.generate.schema>true</aai.generate.schema>
         <sitePath>/content/sites/site/org/onap/aai/aai-common/${project.artifactId}/${project.version}</sitePath>
         <onap.nexus.url>https://nexus.onap.org</onap.nexus.url>
+        <onap.nexus.snapshot.path>/content/repositories/snapshots/</onap.nexus.snapshot.path>
+        <onap.nexus.snapshot.id>ecomp-snapshots</onap.nexus.snapshot.id>
+        <onap.nexus.release.path>/content/repositories/releases/</onap.nexus.release.path>
+        <onap.nexus.release.id>ecomp-releases</onap.nexus.release.id>
     </properties>
 
     <build>
     </build>
 
     <distributionManagement>
+        <repository>
+            <id>${onap.nexus.release.id}</id>
+            <name>ECOMP Release Repository</name>
+            <url>${onap.nexus.url}${onap.nexus.release.path}</url>
+        </repository>
         <snapshotRepository>
-            <id>ecomp-snapshots</id>
+            <id>${onap.nexus.snapshot.id}</id>
             <name>ECOMP Snapshot Repository</name>
-            <url>${onap.nexus.url}/content/repositories/snapshots/</url>
+            <url>${onap.nexus.url}${onap.nexus.snapshot.path}</url>
         </snapshotRepository>
         <site>
             <id>ecomp-site</id>