diff --git a/saltstack-adapter/pom.xml b/saltstack-adapter/pom.xml
index 34688de..b216db5 100644
--- a/saltstack-adapter/pom.xml
+++ b/saltstack-adapter/pom.xml
@@ -23,175 +23,178 @@
   ============LICENSE_END=========================================================
   -->
 
-<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.parent</groupId>
-    <artifactId>odlparent-lite</artifactId>
-    <version>1.1.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
 
-  <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-  <artifactId>saltstack-adaptor</artifactId>
-  <version>0.3.0-SNAPSHOT</version>
-  <name>ccsdk-sli-adaptors :: saltstack-adapter</name>
-  <description>Abstractions to interact with Saltstack server via REST</description>
-  <packaging>pom</packaging>
+    <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+    <artifactId>saltstack-adaptor</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter</name>
+    <description>Abstractions to interact with Saltstack server via REST
+    </description>
+    <packaging>pom</packaging>
 
-  <build>
-    <plugins>
+    <build>
+        <plugins>
 
-     <!-- Black duck plugin Not required for regular builds
-     <plugin> <groupId>com.blackducksoftware.integration</groupId> <artifactId>hub-maven-plugin</artifactId>
-           <version>1.4.0</version> <inherited>false</inherited> <configuration> <hubProjectName>${project.name}</hubProjectName>
-           <outputDirectory>${project.basedir}</outputDirectory> <deployHubBdio>false</deployHubBdio>
-           </configuration> <extensions>true</extensions>
-           <executions>
-		<execution>
-			<id>create-bdio-file</id>
-			<phase>package</phase>
-           		<goals>
-				<goal>createHubOutput</goal>
-			</goals>
-		</execution>
-	    </executions>
+            <!-- Black duck plugin Not required for regular builds
+            <plugin> <groupId>com.blackducksoftware.integration</groupId> <artifactId>hub-maven-plugin</artifactId>
+                  <version>1.4.0</version> <inherited>false</inherited> <configuration> <hubProjectName>${project.name}</hubProjectName>
+                  <outputDirectory>${project.basedir}</outputDirectory> <deployHubBdio>false</deployHubBdio>
+                  </configuration> <extensions>true</extensions>
+                  <executions>
+               <execution>
+                   <id>create-bdio-file</id>
+                   <phase>package</phase>
+                          <goals>
+                       <goal>createHubOutput</goal>
+                   </goals>
+               </execution>
+               </executions>
 
-     </plugin>
-     -->
+            </plugin>
+            -->
 
-    </plugins>
-  </build>
+        </plugins>
+    </build>
 
-  <reporting>
-    <plugins>
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <additionalDependencies>
-            <additionalDependency>
-              <groupId>org.slf4j</groupId>
-              <artifactId>slf4j-api</artifactId>
-              <version>${slf4j.version}</version>
-            </additionalDependency>
-            <additionalDependency>
-              <groupId>org.antlr</groupId>
-              <artifactId>antlr4</artifactId>
-              <version>${antlr.version}</version>
-            </additionalDependency>
-            <additionalDependency>
-              <groupId>org.antlr</groupId>
-              <artifactId>antlr4-runtime</artifactId>
-              <version>4.3</version>
-            </additionalDependency>
-          </additionalDependencies>
-        </configuration>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>javadoc-no-fork</report>
-              <report>test-javadoc-no-fork</report>
-            </reports>
-          </reportSet>
-          <reportSet>
-            <id>aggregate</id>
-            <reports>
-              <report>aggregate</report>
-              <report>test-aggregate</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jxr-plugin</artifactId>
-        <version>2.3</version>
-        <reportSets>
-          <reportSet>
-            <id>aggregate</id>
-            <reports>
-              <report>aggregate</report>
-              <report>test-aggregate</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
+    <reporting>
+        <plugins>
+            <plugin>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <configuration>
+                    <additionalDependencies>
+                        <additionalDependency>
+                            <groupId>org.slf4j</groupId>
+                            <artifactId>slf4j-api</artifactId>
+                            <version>${slf4j.version}</version>
+                        </additionalDependency>
+                        <additionalDependency>
+                            <groupId>org.antlr</groupId>
+                            <artifactId>antlr4</artifactId>
+                            <version>${antlr.version}</version>
+                        </additionalDependency>
+                        <additionalDependency>
+                            <groupId>org.antlr</groupId>
+                            <artifactId>antlr4-runtime</artifactId>
+                            <version>4.3</version>
+                        </additionalDependency>
+                    </additionalDependencies>
+                </configuration>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>javadoc-no-fork</report>
+                            <report>test-javadoc-no-fork</report>
+                        </reports>
+                    </reportSet>
+                    <reportSet>
+                        <id>aggregate</id>
+                        <reports>
+                            <report>aggregate</report>
+                            <report>test-aggregate</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jxr-plugin</artifactId>
+                <version>2.3</version>
+                <reportSets>
+                    <reportSet>
+                        <id>aggregate</id>
+                        <reports>
+                            <report>aggregate</report>
+                            <report>test-aggregate</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
 
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
 
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-changelog-plugin</artifactId>
-        <version>2.3</version>
-        <reportSets>
-          <reportSet>
-            <id>dual-report</id>
-            <configuration>
-              <type>range</type>
-              <range>30</range>
-            </configuration>
-            <reports>
-              <report>changelog</report>
-              <report>file-activity</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-changelog-plugin</artifactId>
+                <version>2.3</version>
+                <reportSets>
+                    <reportSet>
+                        <id>dual-report</id>
+                        <configuration>
+                            <type>range</type>
+                            <range>30</range>
+                        </configuration>
+                        <reports>
+                            <report>changelog</report>
+                            <report>file-activity</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
 
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>taglist-maven-plugin</artifactId>
-        <version>2.4</version>
-      </plugin>
-    </plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>taglist-maven-plugin</artifactId>
+                <version>2.4</version>
+            </plugin>
+        </plugins>
 
-  </reporting>
+    </reporting>
 
-  <dependencyManagement>
-    <dependencies>
+    <dependencyManagement>
+        <dependencies>
 
-      <dependency>
-        <groupId>org.onap.appc</groupId>
-        <artifactId>saltstack-adapter-features</artifactId>
-        <classifier>features</classifier>
-        <type>xml</type>
-        <version>${project.version}</version>
-      </dependency>
+            <dependency>
+                <groupId>org.onap.appc</groupId>
+                <artifactId>saltstack-adapter-features</artifactId>
+                <classifier>features</classifier>
+                <type>xml</type>
+                <version>${project.version}</version>
+            </dependency>
 
-      <dependency>
-        <groupId>org.onap.appc</groupId>
-        <artifactId>saltstack-adapter-provider</artifactId>
-        <version>${project.version}</version>
-      </dependency>
+            <dependency>
+                <groupId>org.onap.appc</groupId>
+                <artifactId>saltstack-adapter-provider</artifactId>
+                <version>${project.version}</version>
+            </dependency>
 
-     <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.11</version>
-        <scope>test</scope>
-    </dependency>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.11</version>
+                <scope>test</scope>
+            </dependency>
 
 
-    </dependencies>
+        </dependencies>
 
 
-  </dependencyManagement>
+    </dependencyManagement>
 
-  <pluginRepositories>
-   <!-- Black Duck plugin dependencies -->
+    <pluginRepositories>
+        <!-- Black Duck plugin dependencies -->
         <pluginRepository>
             <id>JCenter</id>
             <name>JCenter Repository</name>
             <url>http://jcenter.bintray.com</url>
         </pluginRepository>
 
-  </pluginRepositories>
+    </pluginRepositories>
 
-  <modules>
-    <module>saltstack-adapter-provider</module>
-    <module>saltstack-adapter-features</module>
-    <module>saltstack-adapter-installer</module>
-  </modules>
+    <modules>
+        <module>saltstack-adapter-provider</module>
+        <module>saltstack-adapter-features</module>
+        <module>saltstack-adapter-installer</module>
+    </modules>
 </project>
diff --git a/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml b/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
index cf151ca..d90b397 100644
--- a/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
+++ b/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
@@ -1,12 +1,14 @@
 <?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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>single-feature-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
-        <relativePath />
+        <relativePath/>
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
diff --git a/saltstack-adapter/saltstack-adapter-features/features-saltstack-adapter/pom.xml b/saltstack-adapter/saltstack-adapter-features/features-saltstack-adapter/pom.xml
index 1b482d0..703949c 100755
--- a/saltstack-adapter/saltstack-adapter-features/features-saltstack-adapter/pom.xml
+++ b/saltstack-adapter/saltstack-adapter-features/features-saltstack-adapter/pom.xml
@@ -1,12 +1,14 @@
 <?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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>feature-repo-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
-        <relativePath />
+        <relativePath/>
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
@@ -14,7 +16,8 @@
     <version>0.3.0-SNAPSHOT</version>
     <packaging>feature</packaging>
 
-    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
 
     <dependencies>
         <dependency>
diff --git a/saltstack-adapter/saltstack-adapter-features/pom.xml b/saltstack-adapter/saltstack-adapter-features/pom.xml
index 6f765c8..7f78859 100644
--- a/saltstack-adapter/saltstack-adapter-features/pom.xml
+++ b/saltstack-adapter/saltstack-adapter-features/pom.xml
@@ -10,8 +10,9 @@
     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========================================================= -->
-<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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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>odlparent-lite</artifactId>
@@ -22,7 +23,8 @@
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
     <artifactId>saltstack-adapter-features</artifactId>
     <version>0.3.0-SNAPSHOT</version>
-    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
 
     <packaging>pom</packaging>
 
diff --git a/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml b/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
index 6eef6d2..abdcb5e 100644
--- a/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
+++ b/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
@@ -24,17 +24,25 @@
   -->
 
 
-<features name="ccsdk-saltstack-adapter-${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">     
+<features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          name="ccsdk-saltstack-adapter-${project.version}"
+          xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+          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='ccsdk-saltstack-adapter' description="ccsdk-saltstack-adapter" version='${project.version}'>
+    <repository>
+        mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.features.version}/xml/features
+    </repository>
+
+    <feature name='ccsdk-saltstack-adapter'
+             description="ccsdk-saltstack-adapter" version='${project.version}'>
         <feature version="${odl.mdsal.version}">odl-mdsal-broker</feature>
         <feature>sdnc-sli</feature>
-         <bundle dependency="true">mvn:org.onap.appc/appc-common/${project.version}</bundle>
-        <bundle>mvn:org.onap.ccsdk.sli.adaptors/saltstack-adapter-provider/${project.version}</bundle>
+        <bundle dependency="true">
+            mvn:org.onap.appc/appc-common/${project.version}
+        </bundle>
+        <bundle>
+            mvn:org.onap.ccsdk.sli.adaptors/saltstack-adapter-provider/${project.version}
+        </bundle>
     </feature>
 
 </features>
diff --git a/saltstack-adapter/saltstack-adapter-installer/pom.xml b/saltstack-adapter/saltstack-adapter-installer/pom.xml
index b600aed..db72000 100644
--- a/saltstack-adapter/saltstack-adapter-installer/pom.xml
+++ b/saltstack-adapter/saltstack-adapter-installer/pom.xml
@@ -22,7 +22,9 @@
 
   ============LICENSE_END=========================================================
   -->
-<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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
@@ -33,12 +35,15 @@
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
     <artifactId>saltstack-adapter-installer</artifactId>
     <version>0.3.0-SNAPSHOT</version>
-    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
     <packaging>pom</packaging>
     <properties>
         <application.name>ccsdk-saltstack-adapter</application.name>
         <features.boot>${application.name}</features.boot>
-        <features.repositories>mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features</features.repositories>
+        <features.repositories>
+            mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features
+        </features.repositories>
         <include.transitive.dependencies>false</include.transitive.dependencies>
     </properties>
     <dependencies>
@@ -79,11 +84,15 @@
                         </goals>
                         <phase>package</phase>
                         <configuration>
-                        	<appendAssemblyId>true</appendAssemblyId>
+                            <appendAssemblyId>true</appendAssemblyId>
                             <attach>false</attach>
-                            <finalName>stage/${application.name}-${project.version}</finalName>
+                            <finalName>
+                                stage/${application.name}-${project.version}
+                            </finalName>
                             <descriptors>
-                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+                                <descriptor>
+                                    src/assembly/assemble_mvnrepo_zip.xml
+                                </descriptor>
                             </descriptors>
                         </configuration>
                     </execution>
@@ -94,11 +103,14 @@
                         </goals>
                         <phase>package</phase>
                         <configuration>
-                        	<appendAssemblyId>false</appendAssemblyId>
+                            <appendAssemblyId>false</appendAssemblyId>
                             <attach>true</attach>
-                            <finalName>${application.name}-${project.version}</finalName>
+                            <finalName>${application.name}-${project.version}
+                            </finalName>
                             <descriptors>
-                                <descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
+                                <descriptor>
+                                    src/assembly/assemble_installer_zip.xml
+                                </descriptor>
                             </descriptors>
                         </configuration>
                     </execution>
@@ -116,7 +128,9 @@
                         <phase>prepare-package</phase>
                         <configuration>
                             <transitive>false</transitive>
-                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+                            <outputDirectory>
+                                ${project.build.directory}/assembly/system
+                            </outputDirectory>
                             <overWriteReleases>false</overWriteReleases>
                             <overWriteSnapshots>true</overWriteSnapshots>
                             <overWriteIfNewer>true</overWriteIfNewer>
@@ -140,10 +154,12 @@
                         <!-- here the phase you need -->
                         <phase>validate</phase>
                         <configuration>
-                            <outputDirectory>${basedir}/target/stage</outputDirectory>
+                            <outputDirectory>${basedir}/target/stage
+                            </outputDirectory>
                             <resources>
                                 <resource>
-                                    <directory>src/main/resources/scripts</directory>
+                                    <directory>src/main/resources/scripts
+                                    </directory>
                                     <includes>
                                         <include>install-feature.sh</include>
                                     </includes>
diff --git a/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml b/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml
index 7d212cb..d307e4f 100644
--- a/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml
+++ b/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml
@@ -25,38 +25,37 @@
 <!-- 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>adapter</id>
-	<formats>
-		<format>zip</format>
-	</formats>
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+        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>adapter</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>
+    <!--  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>
-
+    <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/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml b/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
index 93df660..1b1bf0b 100644
--- a/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
+++ b/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
@@ -25,26 +25,26 @@
 <!-- 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>repo</id>
-	<formats>
-		<format>zip</format>
-	</formats>
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+        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>repo</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>
+    <!--  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>
+    <fileSets>
+        <fileSet>
+            <directory>target/assembly/</directory>
+            <outputDirectory>.</outputDirectory>
+            <excludes>
+            </excludes>
+        </fileSet>
+    </fileSets>
 
 </assembly>
diff --git a/saltstack-adapter/saltstack-adapter-provider/pom.xml b/saltstack-adapter/saltstack-adapter-provider/pom.xml
index c93558e..81e9ba9 100644
--- a/saltstack-adapter/saltstack-adapter-provider/pom.xml
+++ b/saltstack-adapter/saltstack-adapter-provider/pom.xml
@@ -11,144 +11,132 @@
 	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========================================================= -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.onap.ccsdk.parent</groupId>
-		<artifactId>binding-parent</artifactId>
-		<version>1.1.0-SNAPSHOT</version>
-		<relativePath />
-	</parent>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>binding-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
 
-	<groupId>org.onap.ccsdk.sli.adaptors</groupId>
-	<artifactId>saltstack-adapter-provider</artifactId>
-	<version>0.3.0-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+    <artifactId>saltstack-adapter-provider</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
 
-	<dependencies>
-		<dependency>
-			<groupId>com.att.eelf</groupId>
-			<artifactId>eelf-core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-codec</groupId>
-			<artifactId>commons-codec</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-logging</groupId>
-			<artifactId>commons-logging</artifactId>
-			<version>1.2</version>
-		</dependency>
+    <dependencies>
+        <dependency>
+            <groupId>com.att.eelf</groupId>
+            <artifactId>eelf-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.2</version>
+        </dependency>
 
-		<!-- Needed to run SSH -->
-		<dependency>
-			<groupId>org.apache.sshd</groupId>
-			<artifactId>sshd-core</artifactId>
-			<version>0.12.0</version>
-			<scope>provided</scope>
-		</dependency>
+        <!-- Needed to run SSH -->
+        <dependency>
+            <groupId>org.apache.sshd</groupId>
+            <artifactId>sshd-core</artifactId>
+            <version>0.12.0</version>
+            <scope>provided</scope>
+        </dependency>
 
-		<dependency>
-			<groupId>org.onap.appc</groupId>
-			<artifactId>appc-common</artifactId>
-			<version>1.4.0-SNAPSHOT</version>
-		</dependency>
+        <dependency>
+            <groupId>org.onap.appc</groupId>
+            <artifactId>appc-common</artifactId>
+            <version>1.3.0</version>
+        </dependency>
 
-		<!-- Needed to run test cases -->
-		<dependency>
-			<groupId>org.glassfish.jersey.core</groupId>
-			<artifactId>jersey-common</artifactId>
-			<version>2.9.1</version>
-			<scope>test</scope>
-		</dependency>
+        <dependency>
+            <groupId>org.onap.appc</groupId>
+            <artifactId>appc-ssh-adapter-api</artifactId>
+            <version>1.3.0</version>
+            <scope>provided</scope>
+        </dependency>
 
-		<dependency>
-			<groupId>org.codehaus.jackson</groupId>
-			<artifactId>jackson-jaxrs</artifactId>
-			<version>1.9.13</version>
-			<scope>test</scope>
-		</dependency>
+        <!-- Needed to run test cases -->
+        <dependency>
+            <groupId>org.glassfish.jersey.core</groupId>
+            <artifactId>jersey-common</artifactId>
+            <version>2.9.1</version>
+            <scope>test</scope>
+        </dependency>
 
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-io</artifactId>
-			<version>1.3.2</version>
-		</dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-jaxrs</artifactId>
+            <version>1.9.13</version>
+            <scope>test</scope>
+        </dependency>
 
-		<dependency>
-			<groupId>org.codehaus.jettison</groupId>
-			<artifactId>jettison</artifactId>
-			<scope>provided</scope>
-		</dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>1.3.2</version>
+        </dependency>
 
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.mockito</groupId>
-			<artifactId>mockito-core</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.onap.ccsdk.sli.core</groupId>
-			<artifactId>sli-common</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.codehaus.jettison</groupId>
+            <artifactId>jettison</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
-		<dependency>
-			<groupId>org.onap.ccsdk.sli.core</groupId>
-			<artifactId>sli-provider</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-common</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.osgi</groupId>
-			<artifactId>org.osgi.core</artifactId>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-api</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-provider</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>jcl-over-slf4j</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.json</groupId>
-			<artifactId>json</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+        </dependency>
 
 
-		<dependency>
-			<groupId>com.google.guava</groupId>
-			<artifactId>guava</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
 
+    </dependencies>
 
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<extensions>true</extensions>
-				<configuration>
-					<instructions>
-						<Export-Service>org.onap.appc.adapter.ssh.SshAdapter</Export-Service>
-						<Private-Package>org.onap.appc.adapter.ssh.impl.*</Private-Package>
-						<Import-Package>!org.apache.log,!org.apache.commons.logging,!groovy.lang,!javax.jms,!org.codehaus.commons.compiler,!org.codehaus.groovy.*,!org.codehaus.janino,!com.ibm.icu.*,!com.sun.faces.*,!org.jasypt.*,*</Import-Package>
-						<Embed-Dependency>!dblib-provider,jasypt,eelf-core,logback-core,logback-classic;scope=compile|runtime;inline=false</Embed-Dependency>
-						<Embed-Transitive>true</Embed-Transitive>
-					</instructions>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
 </project>
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
index f6b3b70..6e5feb4 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
@@ -26,18 +26,11 @@
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.RandomStringUtils;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResult;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResultCodes;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringWriter;
 
 /**
  * Returns a custom SSH client
@@ -98,11 +91,11 @@
      * @return command execution status
      */
     public SaltstackResult connectNExecute(String cmd, int retryCount, int retryDelay, long execTimeout)
-                            throws IOException{
+            throws IOException {
 
         SaltstackResult result = new SaltstackResult();
-        OutputStream out = null;
-        OutputStream errs = null;
+        ByteArrayOutputStream out = null;
+        ByteArrayOutputStream errs = null;
         if (execTimeout >= 0) {
             sshConnection.setExecTimeout(execTimeout);
         }
@@ -116,69 +109,59 @@
             if (result.getStatusCode() != SaltstackResultCodes.SUCCESS.getValue()) {
                 return result;
             }
-            String outFilePath = "/tmp/" + RandomStringUtils.random(5, true, true);
-            String errFilePath = "/tmp/" + RandomStringUtils.random(5, true, true);
-            out = new FileOutputStream(outFilePath);
-            errs = new FileOutputStream(errFilePath);
+            out = new ByteArrayOutputStream();
+            errs = new ByteArrayOutputStream();
             result = sshConnection.execCommand(cmd, out, errs, result);
             sshConnection.disconnect();
             if (result.getSshExitStatus() != 0) {
-                return sortExitStatus(result.getSshExitStatus(), errFilePath, cmd);
+                return sortExitStatus(result.getSshExitStatus(), errs.toString(), cmd);
             }
             if (result.getStatusCode() != SaltstackResultCodes.SUCCESS.getValue()) {
                 return result;
             }
             result.setStatusMessage("Success");
-            result.setOutputFileName(outFilePath);
+            result.setOutputMessage(out);
         } catch (Exception io) {
             logger.error("Caught Exception", io);
             result.setStatusCode(SaltstackResultCodes.UNKNOWN_EXCEPTION.getValue());
             result.setStatusMessage(io.getMessage());
         } finally {
-            if( out != null )
+            if (out != null) {
                 out.close();
-            if( errs != null )
+            }
+            if (errs != null) {
                 errs.close();
+            }
         }
         return result;
     }
 
-    public SaltstackResult sortExitStatus(int exitStatus, String errFilePath, String cmd) {
+    public SaltstackResult sortExitStatus(int exitStatus, String errMess, String cmd) {
         SaltstackResult result = new SaltstackResult();
-        String err = "";
-        StringWriter writer = new StringWriter();
-        try {
-            IOUtils.copy(new FileInputStream(new File(errFilePath)), writer, "UTF-8");
-            err = writer.toString();
-        } catch (FileNotFoundException e){
-            logger.info("Error stream file doesn't exist");
-        } catch (IOException e){
-            logger.info("Error stream file doesn't exist");
-        }
         if (exitStatus == 255 || exitStatus == 1) {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
                     + "]. Exit Code " + exitStatus + " and Error message : " +
-                    "Malformed configuration. " + err;
+                    "Malformed configuration. " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.INVALID_COMMAND.getValue());
             result.setStatusMessage(errMessage);
         } else if (exitStatus == 5 || exitStatus == 65) {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
                     + "]. Exit Code " + exitStatus + " and Error message : " +
-                    "Host not allowed to connect. " + err;
+                    "Host not allowed to connect. " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.USER_UNAUTHORIZED.getValue());
             result.setStatusMessage(errMessage);
         } else if (exitStatus == 67 || exitStatus == 73) {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
                     + "]. Exit Code " + exitStatus + " and Error message : " +
-                    "Key exchange failed. " + err;
+                    "Key exchange failed. " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.CERTIFICATE_ERROR.getValue());
             result.setStatusMessage(errMessage);
         } else {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
-                    + "]. Exit Code " + exitStatus + " and Error message : " + err;
+                    + "]. Exit Code " + exitStatus + " and Error message : " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.UNKNOWN_EXCEPTION.getValue());
             result.setStatusMessage(errMessage);
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
index 5e0cc77..a48b67a 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
@@ -108,11 +108,11 @@
     /**
      * This default constructor is used as a work around because the activator wasn't getting called
      */
-    public SaltstackAdapterImpl() throws SvcLogicException{
+    public SaltstackAdapterImpl() throws SvcLogicException {
         initialize(new SaltstackAdapterPropertiesProviderImpl());
     }
 
-    public SaltstackAdapterImpl(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException{
+    public SaltstackAdapterImpl(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException {
         initialize(propProvider);
     }
 
@@ -152,7 +152,7 @@
     /**
      * initialize the Saltstack adapter based on default and over-ride configuration data
      */
-    private void initialize(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException{
+    private void initialize(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException {
 
 
         Properties props = propProvider.getProperties();
@@ -176,7 +176,7 @@
                 logger.info("Creating ssh client connection");
                 // set path to keystore file
                 String sshHost = props.getProperty(SS_SERVER_HOSTNAME);
-                String sshPort = reqServerPort(props) ;
+                String sshPort = reqServerPort(props);
                 String sshUserName = props.getProperty(SS_SERVER_USERNAME);
                 String sshPassword = props.getProperty(SS_SERVER_PASSWD);
                 sshClient = new ConnectionBuilder(sshHost, sshPort, sshUserName, sshPassword);
@@ -212,8 +212,9 @@
 
     private String reqServerPort(Properties props) {
         // use default port if null
-        if (props.getProperty(SS_SERVER_PORT) == null)
+        if (props.getProperty(SS_SERVER_PORT) == null) {
             return "22";
+        }
         return props.getProperty(SS_SERVER_PORT);
     }
 
@@ -235,11 +236,11 @@
     private String parseEnvParam(JSONObject envParams) {
         StringBuilder envParamBuilder = new StringBuilder();
         if (envParams != null) {
-            for(Object key : envParams.keySet()) {
-                if(envParamBuilder.length() > 0) {
+            for (Object key : envParams.keySet()) {
+                if (envParamBuilder.length() > 0) {
                     envParamBuilder.append(", ");
                 }
-                envParamBuilder.append(key+"="+envParams.get((String) key));
+                envParamBuilder.append(key + "=" + envParams.get((String) key));
                 logger.info("EnvParameters : " + envParamBuilder);
             }
         }
@@ -249,7 +250,7 @@
     private String parseFileParam(JSONObject fileParams) {
         StringBuilder fileParamBuilder = new StringBuilder();
         if (fileParams != null) {
-            for(Object key : fileParams.keySet()) {
+            for (Object key : fileParams.keySet()) {
                 fileParamBuilder.append("echo -e \"" + fileParams.get((String) key) + "\" > /srv/salt/" + key).append("; ");
                 logger.info("FileParameters : " + fileParamBuilder);
             }
@@ -258,7 +259,7 @@
     }
 
     private String putToCommands(SvcLogicContext ctx, String slsFileName,
-                                    String applyTo, JSONObject envParams, JSONObject fileParams) throws SvcLogicException {
+                                 String applyTo, JSONObject envParams, JSONObject fileParams) throws SvcLogicException {
 
         StringBuilder constructedCommand = new StringBuilder();
         try {
@@ -283,10 +284,10 @@
 
         } catch (FileNotFoundException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(), "Input SLS file " +
-                    "not found in path : " + slsFileName+". "+ e.getMessage());
+                    "not found in path : " + slsFileName + ". " + e.getMessage());
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(), "Input SLS file " +
-                    "error in path : " + slsFileName +". "+ e.getMessage());
+                    "error in path : " + slsFileName + ". " + e.getMessage());
         } catch (StringIndexOutOfBoundsException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(), "Input file " +
                     "is not of type .sls");
@@ -294,10 +295,14 @@
         return constructedCommand.toString();
     }
 
-    private String stripExtension (String str) {
-        if (str == null) return null;
+    private String stripExtension(String str) {
+        if (str == null) {
+            return null;
+        }
         int pos = str.lastIndexOf(".");
-        if (pos == -1) return str;
+        if (pos == -1) {
+            return str;
+        }
         return str.substring(0, pos);
     }
 
@@ -348,7 +353,7 @@
             checkResponseStatus(testResult, ctx, reqID, slsExec);
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         }
     }
 
@@ -379,7 +384,7 @@
             checkResponseStatus(testResult, ctx, reqID, true);
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         } catch (JSONException e) {
             doFailure(ctx, SaltstackResultCodes.INVALID_COMMAND.getValue(), e.getMessage());
         }
@@ -412,13 +417,13 @@
             checkResponseStatus(testResult, ctx, reqID, true);
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         }
     }
 
     public SaltstackResult execCommand(SvcLogicContext ctx, Map<String, String> params, String commandToExecute,
                                        long execTimeout)
-                                    throws SvcLogicException{
+            throws SvcLogicException {
 
         SaltstackResult testResult = new SaltstackResult();
         try {
@@ -439,7 +444,7 @@
             }
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         }
         return testResult;
     }
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
index 62724c3..71ca5cf 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
@@ -163,19 +163,19 @@
 
     public void setExecTimeout(long timeout) {
         //convert seconds to milliseconds
-        this.timeout = timeout*1000;
+        this.timeout = timeout * 1000;
     }
 
-    public SaltstackResult execCommand(String cmd, OutputStream out, OutputStream err, SaltstackResult result ) {
+    public SaltstackResult execCommand(String cmd, OutputStream out, OutputStream err, SaltstackResult result) {
         return execCommand(cmd, out, err, false, result);
     }
 
-    public SaltstackResult execCommandWithPty(String cmd, OutputStream out, SaltstackResult result ) {
+    public SaltstackResult execCommandWithPty(String cmd, OutputStream out, SaltstackResult result) {
         return execCommand(cmd, out, out, true, result);
     }
 
     private SaltstackResult execCommand(String cmd, OutputStream out, OutputStream err,
-                                        boolean usePty, SaltstackResult result ) {
+                                        boolean usePty, SaltstackResult result) {
 
         try {
             if (logger.isDebugEnabled()) {
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
index 8548efc..2d810ae 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
@@ -31,16 +31,14 @@
 
 import com.google.common.base.Strings;
 import org.json.JSONException;
-import org.json.JSONArray;
 import org.json.JSONObject;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collections;
@@ -79,8 +77,9 @@
      */
     public String reqPortResult(Map<String, String> params) throws SvcLogicException {
         // use default port if null
-        if (params.get(SS_AGENT_PORT_KEY) == null)
+        if (params.get(SS_AGENT_PORT_KEY) == null) {
             return "22";
+        }
         return params.get(SS_AGENT_PORT_KEY);
     }
 
@@ -200,7 +199,7 @@
     public JSONObject reqEnvParameters(Map<String, String> params) throws JSONException {
 
         JSONObject jsonPayload = new JSONObject();
-        final String[] optionalTestParam = { SaltstackMessageParser.ENV_PARAMETERS_OPT_KEY };
+        final String[] optionalTestParam = {SaltstackMessageParser.ENV_PARAMETERS_OPT_KEY};
         parseParam(params, optionalTestParam, jsonPayload);
 
         return (JSONObject) jsonPayload.remove(SaltstackMessageParser.ENV_PARAMETERS_OPT_KEY);
@@ -214,7 +213,7 @@
     public JSONObject reqFileParameters(Map<String, String> params) throws JSONException {
 
         JSONObject jsonPayload = new JSONObject();
-        final String[] optionalTestParam = { SaltstackMessageParser.FILE_PARAMETERS_OPT_KEY };
+        final String[] optionalTestParam = {SaltstackMessageParser.FILE_PARAMETERS_OPT_KEY};
         parseParam(params, optionalTestParam, jsonPayload);
 
         return (JSONObject) jsonPayload.remove(SaltstackMessageParser.FILE_PARAMETERS_OPT_KEY);
@@ -308,19 +307,13 @@
     public SaltstackResult parseResponse(SvcLogicContext ctx, String pfx,
                                          SaltstackResult saltstackResult, boolean slsExec) throws IOException {
         int code = saltstackResult.getStatusCode();
-        InputStream in = null;
         boolean executionStatus = true, retCodeFound = false;
         if (code != SaltstackResultCodes.SUCCESS.getValue()) {
             return saltstackResult;
         }
+        ByteArrayOutputStream str = saltstackResult.getOutputMessage();
         try {
-            File file = new File(saltstackResult.getOutputFileName());
-            in = new FileInputStream(file);
-            byte[] data = new byte[(int) file.length()];
-            in.read(data);
-            String str = new String(data, "UTF-8");
-            in.close();
-            Map<String, String> mm = JsonParser.convertToProperties(str);
+            Map<String, String> mm = JsonParser.convertToProperties(str.toString());
             if (mm != null) {
                 for (Map.Entry<String, String> entry : mm.entrySet()) {
                     if (entry.getKey().contains("retcode")) {
@@ -333,18 +326,19 @@
                     LOGGER.info("+++ " + pfx + "." + entry.getKey() + ": [" + entry.getValue() + "]");
                 }
             }
-        } catch (FileNotFoundException e) {
-            return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file "
-                    + saltstackResult.getOutputFileName() + " : " + e.getMessage());
         } catch (org.codehaus.jettison.json.JSONException e) {
+            if (slsExec) {
+                return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE.getValue(), "error parsing response file"
+                        + " : Output has to be in JSON format");
+            }
             LOGGER.info("Output not in JSON format");
             return putToProperties(ctx, pfx, saltstackResult);
         } catch (Exception e) {
-            return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file "
-                    + saltstackResult.getOutputFileName() + " : " + e.getMessage());
+            return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file"
+                    + " : " + e.getMessage());
         } finally {
-            if (in != null) {
-                in.close();
+            if (str != null) {
+                str.close();
             }
         }
         if (slsExec) {
@@ -363,12 +357,14 @@
 
     public SaltstackResult putToProperties(SvcLogicContext ctx, String pfx,
                                            SaltstackResult saltstackResult) throws IOException {
-        InputStream in = null;
+
+        ByteArrayOutputStream buffer = saltstackResult.getOutputMessage();
+        InputStream inputStream = null;
         try {
-            File file = new File(saltstackResult.getOutputFileName());
-            in = new FileInputStream(file);
+            byte[] bytes = buffer.toByteArray();
             Properties prop = new Properties();
-            prop.load(in);
+            inputStream = new ByteArrayInputStream(bytes);
+            prop.load(inputStream);
             ctx.setAttribute(pfx + "completeResult", prop.toString());
             for (Object key : prop.keySet()) {
                 String name = (String) key;
@@ -379,11 +375,12 @@
                 }
             }
         } catch (Exception e) {
-            saltstackResult = new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "Error parsing response file = "
-                    + saltstackResult.getOutputFileName() + ". Error = " + e.getMessage());
+            saltstackResult = new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "Error parsing response file." +
+                    " Error = " + e.getMessage());
         } finally {
-            if (in != null) {
-                in.close();
+            if (buffer != null && inputStream != null) {
+                buffer.close();
+                inputStream.close();
             }
         }
         saltstackResult.setStatusCode(SaltstackResultCodes.FINAL_SUCCESS.getValue());
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
index b29dd8e..727cfe3 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
@@ -24,6 +24,8 @@
 
 package org.onap.ccsdk.sli.adaptors.saltstack.model;
 
+import java.io.ByteArrayOutputStream;
+
 /**
  * Simple class to store code and message returned by POST/GET to an Saltstack Server
  */
@@ -34,7 +36,7 @@
     private int statusCode;
     private String statusMessage;
     private String results;
-    private String out;
+    private ByteArrayOutputStream out;
     private int sshExitStatus;
 
     public SaltstackResult() {
@@ -58,11 +60,11 @@
         this.results = results;
     }
 
-    public String getOutputFileName() {
+    public ByteArrayOutputStream getOutputMessage() {
         return out;
     }
 
-    public void setOutputFileName(String out) {
+    public void setOutputMessage(ByteArrayOutputStream out) {
         this.out = out;
     }
 
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
index 55beb22..bac2cfe 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
@@ -34,12 +34,13 @@
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
-import org.apache.commons.lang.StringUtils;
-import org.json.JSONObject;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 public class SaltstackServerEmulator {
 
@@ -60,13 +61,10 @@
                 result = rejectRequest(result, "Mocked: Fail");
             } else {
                 String fileName = params.get(SALTSTATE_FILE_NAME);
-                if (fileName == null)
-                    result = acceptRequest(result, "");
-                else
-                    result = acceptRequest(result, fileName);
+                result = acceptRequest(result, fileName);
             }
         } catch (Exception e) {
-            logger.error("JSONException caught", e);
+            logger.error("Exception caught", e);
             rejectRequest(result, e.getMessage());
         }
         return result;
@@ -78,10 +76,14 @@
         return result;
     }
 
-    private SaltstackResult acceptRequest(SaltstackResult result, String fileName) {
+    private SaltstackResult acceptRequest(SaltstackResult result, String fileName) throws IOException {
         result.setStatusCode(SaltstackResultCodes.SUCCESS.getValue());
         result.setStatusMessage("Success");
-        result.setOutputFileName(fileName);
+        Path path = Paths.get(fileName);
+        byte[] data = Files.readAllBytes(path);
+        ByteArrayOutputStream byteOut = new ByteArrayOutputStream(data.length);
+        byteOut.write(data, 0, data.length);
+        result.setOutputMessage(byteOut);
         return result;
     }
 }
\ No newline at end of file
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml b/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml
index 446ab3e..e360f81 100755
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml
@@ -20,19 +20,22 @@
   ============LICENSE_END=========================================================
   -->
 
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+<blueprint xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+           xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            odl:use-default-for-reference-types="true">
 
-    <bean id="propProvider" class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterPropertiesProviderImpl" />
+    <bean id="propProvider"
+          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterPropertiesProviderImpl"/>
 
-    <bean id="saltstackAdapterInstance" class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl">
+    <bean id="saltstackAdapterInstance"
+          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl">
         <argument ref="propProvider"/>
     </bean>
 
     <service ref="saltstackAdapterInstance">
         <interfaces>
-            <value>org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapter</value>
+            <value>org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapter
+            </value>
         </interfaces>
     </service>
 
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties b/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties
index 0b07752..1755f7a 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties
@@ -21,7 +21,6 @@
 #
 # ============LICENSE_END=========================================================
 ###
-
 #
 # Default properties for the APP-C TestService Adapter
 #
@@ -31,17 +30,13 @@
 # to supply configuration options
 org.onap.appc.bootstrap.file=appc.properties
 org.onap.appc.bootstrap.path=${user.home},/opt/opendaylight/current/properties
-
 appc.application.name=APPC
-
 #
 # Define the message resource bundle name to be loaded
 org.onap.appc.resources=org.onap/appc/i18n/MessageResources
 #
 # The name of the adapter.
 org.onap.appc.provider.adaptor.name=org.onap.appc.appc_saltstack_adapter
-
-
 # Default truststore path and password
 org.onap.appc.adapter.saltstack.trustStore=/opt/opendaylight/tls-client/mykeystore.js
 org.onap.appc.adapter.saltstack.trustStore.trustPasswd=changeit
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
index 266147a..8cd7af2 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
@@ -29,14 +29,11 @@
 import org.junit.Test;
 import org.onap.ccsdk.sli.adaptors.saltstack.impl.ConnectionBuilder;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResult;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
 
 public class TestConnectionBuilder {
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
index a0d3604..50530ec 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
@@ -801,7 +801,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if local ssh is not enabled
             System.out.print(e.getMessage());
         }
@@ -829,7 +829,7 @@
             assertEquals(TestId, "test1");
             TestId = svcContext.getAttribute("test1.minion1");
             assertEquals(TestId, "true");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -855,7 +855,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -881,7 +881,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -908,7 +908,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -936,7 +936,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -964,7 +964,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -992,7 +992,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -1018,7 +1018,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -1046,7 +1046,7 @@
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
index 29d0880..57590ba 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
@@ -29,7 +29,6 @@
 import org.junit.Test;
 import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapterPropertiesProvider;
 import org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 import java.util.Properties;
@@ -258,7 +257,6 @@
     }
 
 
-
     @Test
     public void reqExecCommand_setPropertiesElsePortNull() throws SvcLogicException,
             IllegalStateException, IllegalArgumentException {
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
index d082285..71798fb 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
@@ -8,9 +8,9 @@
  * 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.
@@ -23,8 +23,8 @@
 
 import org.codehaus.jettison.json.JSONException;
 import org.junit.Test;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.JsonParser;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
index 3e7e2bc..e5650e8 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
@@ -21,7 +21,6 @@
 #
 # ============LICENSE_END=========================================================
 ###
-
 #
 # Default properties for the APP-C Provider Adapter
 #
@@ -31,9 +30,7 @@
 # to supply configuration options 
 org.onap.appc.bootstrap.file=appc.properties
 org.onap.appc.bootstrap.path=/opt/onap/appc/data/properties,${user.home},.
-
 appc.application.name=APPC
-
 #
 # Define the message resource bundle name to be loaded 
 org.onap.appc.resources=org/onap/appc/i18n/MessageResources
@@ -53,15 +50,13 @@
 # means that the upper bound on the pool is unbounded. 
 org.onap.appc.provider.min.pool=1
 org.onap.appc.provider.max.pool=0
-
 #
 # The following properties are used to configure the retry logic for connection to the 
 # IaaS provider(s).  The retry delay property is the amount of time, in seconds, the
 # application waits between retry attempts.  The retry limit is the number of retries
 # that are allowed before the request is failed.
-org.onap.appc.provider.retry.delay = 30
-org.onap.appc.provider.retry.limit = 10
-
+org.onap.appc.provider.retry.delay=30
+org.onap.appc.provider.retry.limit=10
 #
 # The trusted hosts list for SSL access when a certificate is not provided.
 #
@@ -85,21 +80,17 @@
 # the values for a different provider.  Any number of providers can be defined in this 
 # way. 
 #
-
 # Don't change these 2 right now since they are hard coded in the DG
 #provider1.type=appc
 #provider1.name=appc
-
 #These you can change
 #provider1.identity=appc
 #provider1.tenant1.name=appc
 #provider1.tenant1.userid=appc
 #provider1.tenant1.password=appc
-
 # After a change to the provider make sure to recheck these values with an api call to provider1.identity/tokens
 test.expected-regions=1
 test.expected-endpoints=1
-
 #Your OpenStack IP
 #test.ip=192.168.1.2
 # Your OpenStack Platform's Keystone Port (default is 5000)
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json
index 53158ca..d16bfcc 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json
@@ -6,8 +6,8 @@
 "equipment-id": "Server1",
 "server-model": "Unknown",
 "server-id": "Server1",
-"test-node" : {
-"test-inner-node" : "Test-Value"
+"test-node": {
+"test-inner-node": "Test-Value"
 }
 }
 ],
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json
index cd76486..81131d6 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json
@@ -7,8 +7,8 @@
       "equipment-id": "Server1",
       "server-model": "Unknown",
       "server-id": "Server1",
-      "test-node" : {
-        "test-inner-node" : "Test-Value"
+      "test-node": {
+        "test-inner-node": "Test-Value"
       }
     }
   ],
