[CCSDK-6] Populate seed code

Add seed code for sli/northbound repository
Update groupId to org.onap.ccsdk.sli.northbound
Update to use CCSDK version of sli core

Change-Id: Id3a154a53150a74f4b65060544e76f3e0cad932e
Signed-off-by: Dan Timoney <dtimoney@att.com>
diff --git a/dataChange/.gitignore b/dataChange/.gitignore
new file mode 100755
index 0000000..b73caf3
--- /dev/null
+++ b/dataChange/.gitignore
@@ -0,0 +1,34 @@
+#####standard .git ignore entries#####
+
+## IDE Specific Files ##
+org.eclipse.core.resources.prefs
+.classpath
+.project
+.settings
+.idea
+.externalToolBuilders
+maven-eclipse.xml
+workspace
+
+## Compilation Files ##
+*.class
+**/target
+target
+target-ide
+MANIFEST.MF
+
+## Misc Ignores (OS specific etc) ##
+bin/
+dist
+*~
+*.ipr
+*.iml
+*.iws
+classes
+out/
+.DS_STORE
+.metadata
+
+## Folders which contain auto generated source code ##
+yang-gen-config
+yang-gen-sal
diff --git a/dataChange/.sonar/checkstyle.xml b/dataChange/.sonar/checkstyle.xml
new file mode 100755
index 0000000..3fa2315
--- /dev/null
+++ b/dataChange/.sonar/checkstyle.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"><!-- Generated by Sonar --><module name="Checker"><module name="SuppressionCommentFilter"/><module name="TreeWalker"><module name="FileContentsHolder"/> <module name="ClassFanOutComplexity"><property name="severity" value="warning"/></module><module name="NestedForDepth"><property name="severity" value="warning"/><property name="max" value="1"/></module><module name="ClassDataAbstractionCoupling"><property name="severity" value="warning"/></module></module></module>
\ No newline at end of file
diff --git a/dataChange/.sonar/pmd.xml b/dataChange/.sonar/pmd.xml
new file mode 100755
index 0000000..80343b3
--- /dev/null
+++ b/dataChange/.sonar/pmd.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<ruleset>

+  <rule ref="rulesets/java/naming.xml/BooleanGetMethodName">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/j2ee.xml/StaticEJBFieldShouldBeFinal">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/coupling.xml/CouplingBetweenObjects">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/codesize.xml/TooManyMethods">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/naming.xml/AvoidFieldNameMatchingTypeName">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/basic.xml/DoubleCheckedLocking">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/naming.xml/AvoidFieldNameMatchingMethodName">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/coupling.xml/ExcessiveImports">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/basic.xml/OverrideBothEqualsAndHashcode">

+    <priority>2</priority>

+  </rule>

+  <rule ref="rulesets/java/naming.xml/ShortMethodName">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/basic.xml/BooleanInstantiation">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/codesize.xml/TooManyFields">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/controversial.xml/AvoidUsingNativeCode">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/optimizations.xml/UseStringBufferForStringAppends">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/coupling.xml/LooseCoupling">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/design.xml/NonThreadSafeSingleton">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/j2ee.xml/DoNotUseThreads">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/sunsecure.xml/ArrayIsStoredDirectly">

+    <priority>5</priority>

+  </rule>

+  <rule ref="rulesets/java/sunsecure.xml/MethodReturnsInternalArray">

+    <priority>2</priority>

+  </rule>

+  <rule ref="rulesets/java/design.xml/AssignmentToNonFinalStatic">

+    <priority>3</priority>

+  </rule>

+  <rule ref="rulesets/java/strictexception.xml/AvoidCatchingGenericException">

+    <priority>3</priority>

+  </rule>

+</ruleset>

+

diff --git a/dataChange/README.txt b/dataChange/README.txt
new file mode 100755
index 0000000..f9f4a2a
--- /dev/null
+++ b/dataChange/README.txt
@@ -0,0 +1,35 @@
+======================
+Introduction
+======================
+You have generated an MD-SAL module using the Brocade Archetype. 
+
+* You should be able to successfully run 'mvn clean install' on this project.
+* This will produce a .zip file under the karaf.extension directory which you can deploy using
+Brocade's extension deployment mechanism.
+
+======================
+Next Steps:
+======================
+* run a 'mvn clean install' if you haven't already. This will generate some code from the yang models.
+* Modify the model yang file under the model project.
+* Follow the comments in the generated provider class to wire your new provider into the generated 
+code.
+* Modify the generated provider model to respond to and handle the yang model. Depending on what
+you added to your model you may need to inherit additional interfaces or make other changes to
+the provider model.
+
+======================
+Generated Bundles:
+======================
+* model
+    - Provides the yang model for your application. This is your primary northbound interface.
+* provider
+    - Provides a template implementation for a provider to respond to your yang model.
+* features
+    - Defines a karaf feature. If you add dependencies on third-party bundles then you will need to
+      modify the features.xml to list out the dependencies.
+* karaf.extension
+    - Bundles all of the jars and third party dependencies (minus ODL dependencies) into a single
+      .zip file with the necessary configuration files to work correctly with the Brocade extension
+      mechanism.
+      
diff --git a/dataChange/features/pom.xml b/dataChange/features/pom.xml
new file mode 100755
index 0000000..1234044
--- /dev/null
+++ b/dataChange/features/pom.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>dataChange</artifactId>
+		<groupId>org.onap.ccsdk.sli.northbound</groupId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<groupId>org.onap.ccsdk.sli.northbound</groupId>
+	<artifactId>dataChange-features</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+
+	<packaging>jar</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.northbound</groupId>
+			<artifactId>dataChange-model</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.northbound</groupId>
+			<artifactId>dataChange-provider</artifactId>
+			<classifier>config</classifier>
+			<type>xml</type>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.northbound</groupId>
+			<artifactId>dataChange-provider</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.opendaylight.mdsal</groupId>
+			<artifactId>features-mdsal</artifactId>
+			<classifier>features</classifier>
+			<version>${odl.mdsal.features.version}</version>
+			<type>xml</type>
+
+			<scope>runtime</scope>
+		</dependency>
+
+
+
+		<!-- dependency for opendaylight-karaf-empty for use by testing -->
+		<dependency>
+			<groupId>org.opendaylight.controller</groupId>
+			<artifactId>opendaylight-karaf-empty</artifactId>
+			<version>${odl.karaf.empty.distro.version}</version>
+			<type>zip</type>
+		</dependency>
+
+
+		<dependency>
+		    <!-- Required for launching the feature tests-->
+			<groupId>org.opendaylight.odlparent</groupId>
+			<artifactId>features-test</artifactId>
+			<scope>test</scope>
+			<version>${odl.commons.opendaylight.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.opendaylight.yangtools</groupId>
+			<artifactId>features-yangtools</artifactId>
+			<version>${odl.yangtools.version}</version>
+			<classifier>features</classifier>
+			<type>xml</type>
+			<scope>runtime</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<resources>
+			<resource>
+				<filtering>true</filtering>
+				<directory>src/main/resources</directory>
+			</resource>
+		</resources>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-resources-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>filter</id>
+						<goals>
+							<goal>resources</goal>
+						</goals>
+						<phase>generate-resources</phase>
+					</execution>
+				</executions>
+			</plugin>
+                        <!--
+			<plugin>
+			         launches the feature test, which validates that your karaf feature can
+			         be installed inside of a karaf container. It doesn't validate that your
+			         functionality works correctly, just that you have all of the dependent
+			         bundles defined correctly.
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.16</version>
+				<configuration>
+					<systemPropertyVariables>
+						<karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId>
+						<karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
+						<karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version>
+					</systemPropertyVariables>
+					<dependenciesToScan>
+						<dependency>org.opendaylight.yangtools:features-test</dependency>
+					</dependenciesToScan>
+				</configuration>
+			</plugin>
+			-->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>attach-artifacts</id>
+						<goals>
+							<goal>attach-artifact</goal>
+						</goals>
+						<phase>package</phase>
+						<configuration>
+							<artifacts>
+								<artifact>
+									<file>${project.build.directory}/classes/${features.file}</file>
+									<type>xml</type>
+									<classifier>features</classifier>
+								</artifact>
+							</artifacts>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/dataChange/features/src/main/resources/features.xml b/dataChange/features/src/main/resources/features.xml
new file mode 100644
index 0000000..2b4ac94
--- /dev/null
+++ b/dataChange/features/src/main/resources/features.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 ONAP 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=========================================================
+  -->
+
+
+<features name="sdnc-dataChange-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
+
+    <repository>mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.features.version}/xml/features</repository>
+
+    <feature name='sdnc-dataChange' description="sdnc-dataChange" version='${project.version}'>
+        <!-- Most applications will have a dependency on the ODL MD-SAL Broker -->
+        <feature version="${odl.mdsal.version}">odl-mdsal-broker</feature>
+        <feature version="${sdnctl.sli.version}">sdnc-sli</feature>
+        <bundle>mvn:org.openecomp.sdnc.northbound/dataChange-model/${project.version}</bundle>
+        <bundle>mvn:org.openecomp.sdnc.northbound/dataChange-provider/${project.version}</bundle>
+        <configfile finalname="etc/opendaylight/karaf/200-dataChange-provider.xml">mvn:org.openecomp.sdnc.northbound/dataChange-provider/${project.version}/xml/config</configfile>
+    </feature>
+
+</features>
diff --git a/dataChange/installer/pom.xml b/dataChange/installer/pom.xml
new file mode 100755
index 0000000..414719e
--- /dev/null
+++ b/dataChange/installer/pom.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>dataChange</artifactId>
+		<groupId>org.onap.ccsdk.sli.northbound</groupId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>dataChange-installer</artifactId>
+	<name>dataChange  - Karaf  Installer</name>
+	<packaging>pom</packaging>
+
+	<properties>
+		<application.name>sdnc-dataChange</application.name>
+		<features.boot>sdnc-dataChange</features.boot>
+		<features.repositories>mvn:org.onap.ccsdk.sli.northbound/dataChange-features/${project.version}/xml/features</features.repositories>
+		<include.transitive.dependencies>false</include.transitive.dependencies>
+	</properties>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.northbound</groupId>
+			<artifactId>dataChange-features</artifactId>
+			<version>${project.version}</version>
+			<classifier>features</classifier>
+			<type>xml</type>
+			<exclusions>
+				<exclusion>
+					<groupId>*</groupId>
+					<artifactId>*</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.northbound</groupId>
+			<artifactId>dataChange-provider</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+
+
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.6</version>
+				<executions>
+					<execution>
+						<id>maven-repo-zip</id>
+						<goals>
+							<goal>single</goal>
+						</goals>
+						<phase>package</phase>
+						<configuration>
+							<attach>false</attach>
+							<finalName>stage/${application.name}-${project.version}</finalName>
+							<descriptors>
+								<descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+							</descriptors>
+							<appendAssemblyId>false</appendAssemblyId>
+						</configuration>
+					</execution>
+					<execution>
+						<id>installer-zip</id>
+						<goals>
+							<goal>single</goal>
+						</goals>
+						<phase>package</phase>
+						<configuration>
+							<attach>true</attach>
+							<finalName>${application.name}-${project.version}-installer</finalName>
+							<descriptors>
+								<descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
+							</descriptors>
+							<appendAssemblyId>false</appendAssemblyId>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>copy-dependencies</id>
+						<goals>
+							<goal>copy-dependencies</goal>
+						</goals>
+						<phase>prepare-package</phase>
+						<configuration>
+							<transitive>false</transitive>
+							<outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+							<overWriteReleases>false</overWriteReleases>
+							<overWriteSnapshots>true</overWriteSnapshots>
+							<overWriteIfNewer>true</overWriteIfNewer>
+							<useRepositoryLayout>true</useRepositoryLayout>
+							<addParentPoms>false</addParentPoms>
+							<copyPom>false</copyPom>
+							<includeGroupIds>org.openecomp.sdnc</includeGroupIds>
+							<excludeArtifactIds>sli-common,sli-provider,dblib-provider</excludeArtifactIds>
+							<scope>provided</scope>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>2.6</version>
+				<executions>
+					<execution>
+						<id>copy-version</id>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals><!-- here the phase you need -->
+						<phase>validate</phase>
+						<configuration>
+							<outputDirectory>${basedir}/target/stage</outputDirectory>
+							<resources>
+								<resource>
+									<directory>src/main/resources/scripts</directory>
+									<includes>
+										<include>install-feature.sh</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+
+				</executions>
+			</plugin>
+
+		</plugins>
+	</build>
+
+</project>
diff --git a/dataChange/installer/src/assembly/assemble_installer_zip.xml b/dataChange/installer/src/assembly/assemble_installer_zip.xml
new file mode 100644
index 0000000..e278872
--- /dev/null
+++ b/dataChange/installer/src/assembly/assemble_installer_zip.xml
@@ -0,0 +1,59 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 ONAP Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>installer_zip</id>
+	<formats>
+		<format>zip</format>
+	</formats>
+
+	<!--  we want "system" and related files right at the root level
+		  as this file is suppose to be unzip on top of a karaf
+		  distro. -->
+	<includeBaseDirectory>false</includeBaseDirectory>
+
+	<fileSets>
+		<fileSet>
+			<directory>target/stage/</directory>
+			<outputDirectory>${application.name}</outputDirectory>
+			<fileMode>755</fileMode>
+			<includes>
+				<include>*.sh</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<directory>target/stage/</directory>
+			<outputDirectory>${application.name}</outputDirectory>
+			<fileMode>644</fileMode>
+			<excludes>
+				<exclude>*.sh</exclude>
+			</excludes>
+		</fileSet>
+	</fileSets>
+
+
+
+</assembly>
diff --git a/dataChange/installer/src/assembly/assemble_mvnrepo_zip.xml b/dataChange/installer/src/assembly/assemble_mvnrepo_zip.xml
new file mode 100644
index 0000000..608200d
--- /dev/null
+++ b/dataChange/installer/src/assembly/assemble_mvnrepo_zip.xml
@@ -0,0 +1,55 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 ONAP Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>mvnrepo_zip</id>
+	<formats>
+		<format>zip</format>
+	</formats>
+
+	<!--  we want "system" and related files right at the root level
+		  as this file is suppose to be unzip on top of a karaf
+		  distro. -->
+	<includeBaseDirectory>false</includeBaseDirectory>
+
+	<fileSets>
+		<fileSet>
+			<directory>target/assembly/</directory>
+			<outputDirectory>.</outputDirectory>
+			<excludes>
+			</excludes>
+		</fileSet>
+	</fileSets>
+
+	<files>
+		<file>
+			<source>../provider/src/main/resources/initial/${feature-name}-provider.xml</source>
+			<destName>./etc/opendaylight/karaf/200-${feature-name}-provider.xml</destName>
+		</file>
+
+	</files>
+
+</assembly>
diff --git a/dataChange/installer/src/main/resources/scripts/install-feature.sh b/dataChange/installer/src/main/resources/scripts/install-feature.sh
new file mode 100644
index 0000000..9a47d22
--- /dev/null
+++ b/dataChange/installer/src/main/resources/scripts/install-feature.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 ONAP Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+ODL_HOME=${ODL_HOME:-/opt/opendaylight/current}
+ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client}
+ODL_KARAF_CLIENT_OPTS=${ODL_KARAF_CLIENT_OPTS:-"-u karaf"}
+INSTALLERDIR=$(dirname $0)
+
+REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip
+
+if [ -f ${REPOZIP} ]
+then
+	unzip -d ${ODL_HOME} ${REPOZIP}
+else
+	echo "ERROR : repo zip ($REPOZIP) not found"
+	exit 1
+fi
+
+${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories}
+${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot}
diff --git a/dataChange/model/pom.xml b/dataChange/model/pom.xml
new file mode 100755
index 0000000..0d16ebf
--- /dev/null
+++ b/dataChange/model/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>dataChange</artifactId>
+		<groupId>org.onap.ccsdk.sli.northbound</groupId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<groupId>org.onap.ccsdk.sli.northbound</groupId>
+	<artifactId>dataChange-model</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<packaging>bundle</packaging>
+
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+                                <extensions>true</extensions>
+                                <configuration>
+                                        <instructions>
+                                                <Import-Package>*</Import-Package>
+                                        </instructions>
+                                </configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.opendaylight.yangtools</groupId>
+				<artifactId>yang-maven-plugin</artifactId>
+				<version>${odl.yangtools.yang.maven.plugin.version}</version>
+				<dependencies>
+					<dependency>
+						<groupId>org.opendaylight.mdsal</groupId>
+						<artifactId>maven-sal-api-gen-plugin</artifactId>
+						<version>${odl.sal.api.gen.plugin.version}</version>
+						<type>jar</type>
+					</dependency>
+				</dependencies>
+				<executions>
+					<execution>
+						<goals>
+							<goal>generate-sources</goal>
+						</goals>
+						<configuration>
+							<yangFilesRootDir>${yang.file.directory}</yangFilesRootDir>
+							<codeGenerators>
+								<generator>
+									<codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
+									<outputBaseDir>${salGeneratorPath}</outputBaseDir>
+								</generator>
+							</codeGenerators>
+							<inspectDependencies>true</inspectDependencies>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.opendaylight.mdsal</groupId>
+			<artifactId>yang-binding</artifactId>
+			<version>${odl.mdsal.yang.binding.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.yangtools</groupId>
+			<artifactId>yang-common</artifactId>
+			<version>${odl.yangtools.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.mdsal.model</groupId>
+			<artifactId>ietf-inet-types</artifactId>
+			<version>${odl.ietf-inet-types.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.mdsal.model</groupId>
+			<artifactId>ietf-yang-types</artifactId>
+			<version>${odl.ietf-yang-types.version}</version>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/dataChange/model/src/main/yang/DataChange.yang b/dataChange/model/src/main/yang/DataChange.yang
new file mode 100755
index 0000000..3d326f7
--- /dev/null
+++ b/dataChange/model/src/main/yang/DataChange.yang
@@ -0,0 +1,73 @@
+module DataChange {
+
+  yang-version 1;
+
+  namespace "org:openecomp:sdnc:datachange";
+
+  prefix datachg;
+
+  organization "AT&T, Inc.";
+
+  contact
+    "Dan Timoney <dt5972@att.com>";
+
+  description
+    "Defines API interface for notification of data changes";
+
+  revision "2015-05-19" {
+    description
+      "Initial draft";
+  }
+
+  grouping data-change-request {
+
+  	leaf aai-event-id {
+  		type string;
+  	}
+
+  	leaf aai-node-type {
+  		type string;
+  	}
+
+  	leaf aai-event-trigger {
+  		type enumeration {
+  			enum "Update";
+  			enum "Delete";
+  		}
+  	}
+
+  	list key-data {
+  		key key-name;
+  		leaf key-name {
+  			type string;
+  		}
+  		leaf key-value {
+  			type string;
+  		}
+  	}
+
+  	leaf selflink {
+  		type string;
+  	}
+
+  }
+
+  grouping data-change-response {
+
+     leaf data-change-response-code {
+     	type string;
+     }
+  }
+
+  rpc data-change-notification {
+
+  	input {
+  		uses data-change-request;
+  		}
+
+  	output {
+  		uses data-change-response;
+  	}
+  }
+
+}
diff --git a/dataChange/pom.xml b/dataChange/pom.xml
new file mode 100755
index 0000000..2e3d874
--- /dev/null
+++ b/dataChange/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.onap.ccsdk.sli.northbound</groupId>
+		<artifactId>sdnc-northbound</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+
+	<packaging>pom</packaging>
+	<groupId>org.onap.ccsdk.sli.northbound</groupId>
+	<artifactId>dataChange</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+
+	<properties>
+		<feature-name>dataChange</feature-name>
+	</properties>
+
+	<dependencyManagement>
+
+		<dependencies>
+			<dependency>
+				<groupId>org.onap.ccsdk.sli.northbound</groupId>
+				<artifactId>dataChange-features</artifactId>
+				<classifier>features</classifier>
+				<type>xml</type>
+				<version>${project.version}</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.onap.ccsdk.sli.northbound</groupId>
+				<artifactId>dataChange-model</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.onap.ccsdk.sli.northbound</groupId>
+				<artifactId>dataChange-provider</artifactId>
+				<version>${project.version}</version>
+				<classifier>config</classifier>
+				<type>xml</type>
+			</dependency>
+			<dependency>
+				<groupId>org.onap.ccsdk.sli.northbound</groupId>
+				<artifactId>dataChange-provider</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+		</dependencies>
+
+
+	</dependencyManagement>
+
+  <modules>
+    <module>model</module>
+    <module>features</module>
+    <module>provider</module>
+    <module>installer</module>
+  </modules>
+</project>
diff --git a/dataChange/provider/pom.xml b/dataChange/provider/pom.xml
new file mode 100755
index 0000000..5a7c700
--- /dev/null
+++ b/dataChange/provider/pom.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>dataChange</artifactId>
+		<groupId>org.onap.ccsdk.sli.northbound</groupId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>dataChange-provider</artifactId>
+	<packaging>bundle</packaging>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Export-Package>org.opendaylight.controller.config.yang.config.DataChange_provider.impl</Export-Package>
+						<Import-Package>*</Import-Package>
+					</instructions>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.opendaylight.yangtools</groupId>
+				<artifactId>yang-maven-plugin</artifactId>
+				<version>${odl.yangtools.yang.maven.plugin.version}</version>
+
+				<executions>
+					<execution>
+						<id>config</id>
+						<goals>
+							<goal>generate-sources</goal>
+						</goals>
+						<configuration>
+							<codeGenerators>
+								<generator>
+									<codeGeneratorClass>org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator</codeGeneratorClass>
+									<outputBaseDir>${jmxGeneratorPath}</outputBaseDir>
+									<additionalConfiguration>
+										<namespaceToPackage1>urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang</namespaceToPackage1>
+									</additionalConfiguration>
+								</generator>
+								<generator>
+									<codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
+									<outputBaseDir>${salGeneratorPath}</outputBaseDir>
+								</generator>
+							</codeGenerators>
+							<inspectDependencies>true</inspectDependencies>
+						</configuration>
+					</execution>
+				</executions>
+				<dependencies>
+					<dependency>
+						<groupId>org.opendaylight.mdsal</groupId>
+						<artifactId>maven-sal-api-gen-plugin</artifactId>
+						<version>${odl.sal.api.gen.plugin.version}</version>
+						<type>jar</type>
+					</dependency>
+					<dependency>
+						<groupId>org.opendaylight.controller</groupId>
+						<artifactId>yang-jmx-generator-plugin</artifactId>
+						<version>${odl.yang.jmx.generator.version}</version>
+					</dependency>
+				</dependencies>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>attach-artifacts</id>
+						<goals>
+							<goal>attach-artifact</goal>
+						</goals>
+						<phase>package</phase>
+						<configuration>
+							<artifacts>
+								<artifact>
+									<file>${project.build.directory}/classes/initial/${feature-name}-provider.xml</file>
+									<type>xml</type>
+									<classifier>config</classifier>
+								</artifact>
+							</artifacts>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.northbound</groupId>
+			<artifactId>dataChange-model</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.controller</groupId>
+			<artifactId>config-api</artifactId>
+
+			<version>${odl.controller.config.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.controller</groupId>
+			<artifactId>sal-binding-config</artifactId>
+			<version>${odl.mdsal.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.controller</groupId>
+			<artifactId>sal-binding-api</artifactId>
+			<version>${odl.mdsal.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.opendaylight.controller</groupId>
+			<artifactId>sal-common-util</artifactId>
+			<version>${odl.mdsal.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.core</groupId>
+			<artifactId>sli-common</artifactId>
+			<version>${sdnctl.sli.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.onap.ccsdk.sli.core</groupId>
+			<artifactId>sli-provider</artifactId>
+			<version>${sdnctl.sli.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/dataChange/provider/src/main/java/org/opendaylight/yang/gen/v1/org/openecomp/sdnc/datachange/provider/impl/rev140523/DataChangeProviderModule.java b/dataChange/provider/src/main/java/org/opendaylight/yang/gen/v1/org/openecomp/sdnc/datachange/provider/impl/rev140523/DataChangeProviderModule.java
new file mode 100644
index 0000000..c3dd110
--- /dev/null
+++ b/dataChange/provider/src/main/java/org/opendaylight/yang/gen/v1/org/openecomp/sdnc/datachange/provider/impl/rev140523/DataChangeProviderModule.java
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 ONAP 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.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.provider.impl.rev140523;
+
+import org.openecomp.sdnc.datachange.DataChangeProvider;
+
+public class DataChangeProviderModule extends org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.provider.impl.rev140523.AbstractDataChangeProviderModule {
+    public DataChangeProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public DataChangeProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.provider.impl.rev140523.DataChangeProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
+        super(identifier, dependencyResolver, oldModule, oldInstance);
+    }
+
+    @Override
+    public void customValidation() {
+        // add custom validation form module attributes here.
+    }
+
+    @Override
+    public java.lang.AutoCloseable createInstance() {
+        final DataChangeProvider provider = new DataChangeProvider(getDataBrokerDependency()
+                , getNotificationServiceDependency()
+                , getRpcRegistryDependency());
+
+        return new AutoCloseable() {
+
+           @Override
+           public void close() throws Exception {
+               provider.close();
+           }
+       };
+    }
+
+}
diff --git a/dataChange/provider/src/main/java/org/opendaylight/yang/gen/v1/org/openecomp/sdnc/datachange/provider/impl/rev140523/DataChangeProviderModuleFactory.java b/dataChange/provider/src/main/java/org/opendaylight/yang/gen/v1/org/openecomp/sdnc/datachange/provider/impl/rev140523/DataChangeProviderModuleFactory.java
new file mode 100644
index 0000000..2f47249
--- /dev/null
+++ b/dataChange/provider/src/main/java/org/opendaylight/yang/gen/v1/org/openecomp/sdnc/datachange/provider/impl/rev140523/DataChangeProviderModuleFactory.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 ONAP 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=========================================================
+ */
+
+/*
+* Generated file
+*
+* Generated from: yang module name: DataChange-provider-impl yang module local name: DataChange-provider-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Wed Nov 02 06:00:03 EDT 2016
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.provider.impl.rev140523;
+public class DataChangeProviderModuleFactory extends org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.provider.impl.rev140523.AbstractDataChangeProviderModuleFactory {
+
+}
diff --git a/dataChange/provider/src/main/java/org/openecomp/sdnc/datachange/DataChangeClient.java b/dataChange/provider/src/main/java/org/openecomp/sdnc/datachange/DataChangeClient.java
new file mode 100644
index 0000000..5db3eff
--- /dev/null
+++ b/dataChange/provider/src/main/java/org/openecomp/sdnc/datachange/DataChangeClient.java
@@ -0,0 +1,115 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 ONAP 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.openecomp.sdnc.datachange;
+
+import java.util.Properties;
+
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper;
+import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService;
+import org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.rev150519.DataChangeNotificationOutputBuilder;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DataChangeClient {
+
+	private static final Logger LOG = LoggerFactory
+			.getLogger(DataChangeClient.class);
+
+	private SvcLogicService svcLogic = null;
+
+	public DataChangeClient()
+	{
+		BundleContext bctx = FrameworkUtil.getBundle(SvcLogicService.class).getBundleContext();
+
+    	// Get SvcLogicService reference
+		ServiceReference sref = bctx.getServiceReference(SvcLogicService.NAME);
+		if (sref  != null)
+		{
+			svcLogic =  (SvcLogicService) bctx.getService(sref);
+
+		}
+		else
+		{
+			LOG.warn("Cannot find service reference for "+SvcLogicService.NAME);
+
+		}
+	}
+
+	public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException
+	{
+		return(svcLogic.hasGraph(module, rpc, version, mode));
+	}
+
+	public Properties execute(String module, String rpc, String version, String mode, DataChangeNotificationOutputBuilder serviceData)
+			throws SvcLogicException {
+
+		Properties parms = new Properties();
+
+		return execute(module,rpc,version, mode,serviceData,parms);
+	}
+
+	public Properties execute(String module, String rpc, String version, String mode, DataChangeNotificationOutputBuilder serviceData, Properties parms)
+				throws SvcLogicException {
+
+		parms = MdsalHelper.toProperties(parms, serviceData);
+
+		if (LOG.isDebugEnabled())
+		{
+			LOG.debug("Parameters passed to SLI");
+
+			for (Object key : parms.keySet()) {
+				String parmName = (String) key;
+				String parmValue = parms.getProperty(parmName);
+
+				LOG.debug(parmName+" = "+parmValue);
+
+			}
+		}
+
+		Properties respProps = svcLogic.execute(module, rpc, version, mode, parms);
+
+		if (LOG.isDebugEnabled())
+		{
+			LOG.debug("Parameters returned by SLI");
+
+			for (Object key : respProps.keySet()) {
+				String parmName = (String) key;
+				String parmValue = respProps.getProperty(parmName);
+
+				LOG.debug(parmName+" = "+parmValue);
+
+			}
+		}
+		if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
+			return (respProps);
+		}
+
+		MdsalHelper.toBuilder(respProps, serviceData);
+
+		return (respProps);
+	}
+
+}
diff --git a/dataChange/provider/src/main/java/org/openecomp/sdnc/datachange/DataChangeProvider.java b/dataChange/provider/src/main/java/org/openecomp/sdnc/datachange/DataChangeProvider.java
new file mode 100644
index 0000000..791da5c
--- /dev/null
+++ b/dataChange/provider/src/main/java/org/openecomp/sdnc/datachange/DataChangeProvider.java
@@ -0,0 +1,181 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 ONAP 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.openecomp.sdnc.datachange;
+
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.rev150519.DataChangeNotificationInput;
+import org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.rev150519.DataChangeNotificationInputBuilder;
+import org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.rev150519.DataChangeNotificationOutput;
+import org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.rev150519.DataChangeNotificationOutputBuilder;
+import org.opendaylight.yang.gen.v1.org.openecomp.sdnc.datachange.rev150519.DataChangeService;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.util.concurrent.Futures;
+
+/**
+ * Defines a base implementation for your provider. This class extends from a helper class
+ * which provides storage for the most commonly used components of the MD-SAL. Additionally the
+ * base class provides some basic logging and initialization / clean up methods.
+ *
+ */
+public class DataChangeProvider implements AutoCloseable, DataChangeService{
+
+    private final Logger log = LoggerFactory.getLogger( DataChangeProvider.class );
+    private final String appName = "DataChange";
+    private final ExecutorService executor;
+
+    protected DataBroker dataBroker;
+    protected NotificationProviderService notificationService;
+    protected RpcProviderRegistry rpcRegistry;
+    protected BindingAwareBroker.RpcRegistration<DataChangeService> rpcRegistration;
+
+
+    public DataChangeProvider(DataBroker dataBroker2,
+			NotificationProviderService notificationProviderService,
+			RpcProviderRegistry rpcProviderRegistry) {
+        this.log.info( "Creating provider for " + appName );
+        executor = Executors.newFixedThreadPool(1);
+		dataBroker = dataBroker2;
+		notificationService = notificationProviderService;
+		rpcRegistry = rpcProviderRegistry;
+		initialize();
+    }
+
+    public void initialize(){
+        log.info( "Initializing provider for " + appName );
+        rpcRegistration = rpcRegistry.addRpcImplementation(DataChangeService.class, this);
+        log.info( "Initialization complete for " + appName );
+    }
+
+    protected void initializeChild() {
+        //Override if you have custom initialization intelligence
+    }
+
+    @Override
+    public void close() throws Exception {
+        log.info( "Closing provider for " + appName );
+	    executor.shutdown();
+	    rpcRegistration.close();
+        log.info( "Successfully closed provider for " + appName );
+    }
+
+    public void setDataBroker(DataBroker dataBroker) {
+        this.dataBroker = dataBroker;
+        if( log.isDebugEnabled() ){
+            log.debug( "DataBroker set to " + (dataBroker==null?"null":"non-null") + "." );
+        }
+    }
+
+    public void setNotificationService(
+            NotificationProviderService notificationService) {
+        this.notificationService = notificationService;
+        if( log.isDebugEnabled() ){
+            log.debug( "Notification Service set to " + (notificationService==null?"null":"non-null") + "." );
+        }
+    }
+
+    public void setRpcRegistry(RpcProviderRegistry rpcRegistry) {
+        this.rpcRegistry = rpcRegistry;
+        if( log.isDebugEnabled() ){
+            log.debug( "RpcRegistry set to " + (rpcRegistry==null?"null":"non-null") + "." );
+        }
+    }
+
+	@Override
+	public Future<RpcResult<DataChangeNotificationOutput>> dataChangeNotification(
+			DataChangeNotificationInput input) {
+		final String SVC_OPERATION = "data-change-notification";
+
+		Properties parms = new Properties();
+		DataChangeNotificationOutputBuilder serviceDataBuilder = new DataChangeNotificationOutputBuilder();
+
+		log.info( SVC_OPERATION +" called." );
+
+		if(input == null || input.getAaiEventId() == null) {
+			log.debug("exiting " +SVC_OPERATION+ " because of invalid input");
+			serviceDataBuilder.setDataChangeResponseCode("403");
+			RpcResult<DataChangeNotificationOutput> rpcResult =
+				RpcResultBuilder.<DataChangeNotificationOutput> status(true).withResult(serviceDataBuilder.build()).build();
+			return Futures.immediateFuture(rpcResult);
+		}
+
+		// add input to parms
+		log.info("Adding INPUT data for "+SVC_OPERATION+" input: " + input);
+		DataChangeNotificationInputBuilder inputBuilder = new DataChangeNotificationInputBuilder(input);
+		MdsalHelper.toProperties(parms, inputBuilder.build());
+
+		// Call SLI sync method
+		// Get SvcLogicService reference
+
+		DataChangeClient svcLogicClient = new DataChangeClient();
+		Properties respProps = null;
+
+		try
+		{
+			if (svcLogicClient.hasGraph("DataChange", SVC_OPERATION , null, "sync"))
+			{
+				try
+				{
+					respProps = svcLogicClient.execute("DataChange", SVC_OPERATION, null, "sync", serviceDataBuilder, parms);
+				}
+				catch (Exception e)
+				{
+					log.error("Caught exception executing service logic for "+ SVC_OPERATION, e);
+					serviceDataBuilder.setDataChangeResponseCode("500");
+				}
+			} else {
+				log.error("No service logic active for DataChange: '" + SVC_OPERATION + "'");
+				serviceDataBuilder.setDataChangeResponseCode("503");
+			}
+		}
+		catch (Exception e)
+		{
+			log.error("Caught exception looking for service logic", e);
+			serviceDataBuilder.setDataChangeResponseCode("500");
+		}
+
+		String errorCode = serviceDataBuilder.getDataChangeResponseCode();
+
+		if ( errorCode != null && errorCode.length() != 0 && !( errorCode.equals("0")|| errorCode.equals("200"))) {
+			log.error("Returned FAILED for "+SVC_OPERATION+" error code: '" + errorCode + "'");
+		} else {
+			log.info("Returned SUCCESS for "+SVC_OPERATION+" ");
+		}
+
+		RpcResult<DataChangeNotificationOutput> rpcResult =
+				RpcResultBuilder.<DataChangeNotificationOutput> status(true).withResult(serviceDataBuilder.build()).build();
+		// return error
+		return Futures.immediateFuture(rpcResult);
+	}
+}
diff --git a/dataChange/provider/src/main/resources/initial/dataChange-provider.xml b/dataChange/provider/src/main/resources/initial/dataChange-provider.xml
new file mode 100644
index 0000000..2812ca4
--- /dev/null
+++ b/dataChange/provider/src/main/resources/initial/dataChange-provider.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 ONAP 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=========================================================
+  -->
+
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<snapshot>
+    <configuration>
+        <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+            <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+                <module>
+
+                    <!-- This xmlns:prefix should match the namespace in the *-provider-impl.yang file
+                         The prefix: inside type should match the prefix of the yang file. -->
+                    <type xmlns:prefix="org:openecomp:sdnc:datachange:provider:impl">
+                        prefix:DataChange-provider-impl
+                    </type>
+                    <name>DataChange-provider-impl</name>
+
+                    <!--  The following sections contain bindings to services defined in the
+                          *-provider-impl yang file. For example the rpc-registry is required
+                          because we have a dependency (or augmentation) named "rpc-registry"
+                          and which binds to the md-sa-binding-registry. If you remove those
+                          dependencies from the yang file then you can remove them from here. -->
+                    <rpc-registry>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
+                        <name>binding-rpc-broker</name>
+                    </rpc-registry>
+
+                    <data-broker>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+                        <name>binding-data-broker</name>
+                    </data-broker>
+
+                     <notification-service>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">
+                            binding:binding-notification-service
+                        </type>
+                        <name>binding-notification-broker</name>
+                    </notification-service>
+                </module>
+
+            </modules>
+        </data>
+
+    </configuration>
+
+    <!--  Required capabilities are basically a listing of all modules that need to be imported before
+          our service can be resolved. Capabilities for dependencies defined above are implied which is
+          why we do not have define a required capability for the data broker, for example. -->
+    <required-capabilities>
+        <capability>org:openecomp:sdnc:datachange:provider:impl?module=DataChange-provider-impl&amp;revision=2014-05-23</capability>
+    </required-capabilities>
+
+</snapshot>
diff --git a/dataChange/provider/src/main/yang/DataChange-provider-impl.yang b/dataChange/provider/src/main/yang/DataChange-provider-impl.yang
new file mode 100755
index 0000000..fe1dab2
--- /dev/null
+++ b/dataChange/provider/src/main/yang/DataChange-provider-impl.yang
@@ -0,0 +1,61 @@
+module DataChange-provider-impl {
+
+    yang-version 1;
+    namespace "org:openecomp:sdnc:datachange:provider:impl";
+    prefix "DataChange-provider-impl";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+
+     description
+        "This module contains the base YANG definitions for
+        DataChange-provider impl implementation.";
+
+    revision "2014-05-23" {
+        description
+            "Initial revision.";
+    }
+
+    // This is the definition of the service implementation as a module identity.
+    identity DataChange-provider-impl {
+            base config:module-type;
+
+            // Specifies the prefix for generated java classes.
+            config:java-name-prefix DataChangeProvider;
+    }
+
+    // Augments the 'configuration' choice node under modules/module.
+    // We consume the three main services, RPCs, DataStore, and Notifications
+    augment "/config:modules/config:module/config:configuration" {
+        case DataChange-provider-impl {
+            when "/config:modules/config:module/config:type = 'DataChange-provider-impl'";
+
+            container rpc-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-rpc-registry;
+                    }
+                }
+            }
+
+            container notification-service {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-notification-service;
+                    }
+                }
+            }
+
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory false;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+        }
+    }
+}