diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/org/opendaylight/blueprint/ansible-adapter-blueprint.xml b/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/org/opendaylight/blueprint/ansible-adapter-blueprint.xml
deleted file mode 100755
index 76abc82..0000000
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/org/opendaylight/blueprint/ansible-adapter-blueprint.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ============LICENSE_START=======================================================
-  ONAP : SLI
-  ================================================================================
-  Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
-  ================================================================================
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-  ECOMP is a trademark and service mark of AT&T Intellectual Property.
-  ============LICENSE_END=========================================================
-  -->
-
-<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.ansible.impl.AnsibleAdapterPropertiesProviderImpl"/>
-
-    <bean id="ansibleAdapterInstance" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterImpl">
-        <argument ref="propProvider"/>
-    </bean>
-
-    <service ref="ansibleAdapterInstance">
-        <interfaces>
-            <value>org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter</value>
-        </interfaces>
-    </service>
-
-</blueprint>
diff --git a/adaptors/ansible-adapter/.pydevproject b/adaptors/ansible-adaptor/.pydevproject
similarity index 100%
rename from adaptors/ansible-adapter/.pydevproject
rename to adaptors/ansible-adaptor/.pydevproject
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/.gitignore b/adaptors/ansible-adaptor/ansible-adaptor-bundle/.gitignore
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/.gitignore
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/.gitignore
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/pom.xml b/adaptors/ansible-adaptor/ansible-adaptor-bundle/pom.xml
similarity index 98%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/pom.xml
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/pom.xml
index 192bcec..be24ed1 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/pom.xml
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/pom.xml
@@ -24,7 +24,7 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-    <artifactId>ansible-adapter-bundle</artifactId>
+    <artifactId>ansible-adaptor-bundle</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapter.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptor.java
similarity index 88%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapter.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptor.java
index 65f80a1..55dbc42 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapter.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptor.java
@@ -28,15 +28,15 @@
 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
 
 /**
- * This interface defines the operations that the Ansible adapter exposes.
+ * This interface defines the operations that the Ansible adaptor exposes.
  */
-public interface AnsibleAdapter extends SvcLogicJavaPlugin {
+public interface AnsibleAdaptor extends SvcLogicJavaPlugin {
     /**
-     * Returns the symbolic name of the adapter
+     * Returns the symbolic name of the adaptor
      *
-     * @return The adapter name
+     * @return The adaptor name
      */
-    String getAdapterName();
+    String getAdaptorName();
 
     /* Method to post request for execution of Playbook */
     void reqExec(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException;
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapterConstants.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptorConstants.java
similarity index 82%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapterConstants.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptorConstants.java
index 20a8400..e10e35a 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapterConstants.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptorConstants.java
@@ -1,6 +1,6 @@
 package org.onap.ccsdk.sli.adaptors.ansible;
 
-public class AnsibleAdapterConstants {
+public class AnsibleAdaptorConstants {
 
     public static final String ID = "Id";
     public static final String USER = "User";
@@ -32,19 +32,19 @@
     public static final String INVENTORY_NAMES = "InventoryNames";
     public static final String LOCAL_PARAMETERS = "LocalParameters";
 
-    public static final String ID_ATTRIBUTE_NAME = "org.onap.appc.adapter.ansible.Id";
-    public static final String LOG_ATTRIBUTE_NAME = "org.onap.appc.adapter.ansible.log";
-    public static final String OUTPUT_ATTRIBUTE_NAME = "org.onap.appc.adapter.ansible.output";
-    public static final String TIMEOUT_PROPERTY_NAME = "org.onap.appc.adapter.ansible.timeout";
-    public static final String MESSAGE_ATTRIBUTE_NAME = "org.onap.appc.adapter.ansible.message";
-    public static final String RESULTS_ATTRIBUTE_NAME = "org.onap.appc.adapter.ansible.results";
-    public static final String RESULT_CODE_ATTRIBUTE_NAME = "org.onap.appc.adapter.ansible.result.code";
+    public static final String ID_ATTRIBUTE_NAME = "org.onap.appc.adaptor.ansible.Id";
+    public static final String LOG_ATTRIBUTE_NAME = "org.onap.appc.adaptor.ansible.log";
+    public static final String OUTPUT_ATTRIBUTE_NAME = "org.onap.appc.adaptor.ansible.output";
+    public static final String TIMEOUT_PROPERTY_NAME = "org.onap.appc.adaptor.ansible.timeout";
+    public static final String MESSAGE_ATTRIBUTE_NAME = "org.onap.appc.adaptor.ansible.message";
+    public static final String RESULTS_ATTRIBUTE_NAME = "org.onap.appc.adaptor.ansible.results";
+    public static final String RESULT_CODE_ATTRIBUTE_NAME = "org.onap.appc.adaptor.ansible.result.code";
 
-    public static final String TRUSTSTORE_PROPERTY_NAME = "org.onap.appc.adapter.ansible.trustStore";
-    public static final String CLIENT_TYPE_PROPERTY_NAME = "org.onap.appc.adapter.ansible.clientType";
-    public static final String POLL_INTERVAL_PROPERTY_NAME = "org.onap.appc.adapter.ansible.pollInterval";
-    public static final String SOCKET_TIMEOUT_PROPERTY_NAME = "org.onap.appc.adapter.ansible.socketTimeout";
-    public static final String TRUSTSTORE_PASS_PROPERTY_NAME = "org.onap.appc.adapter.ansible.trustStore.trustPasswd";
+    public static final String TRUSTSTORE_PROPERTY_NAME = "org.onap.appc.adaptor.ansible.trustStore";
+    public static final String CLIENT_TYPE_PROPERTY_NAME = "org.onap.appc.adaptor.ansible.clientType";
+    public static final String POLL_INTERVAL_PROPERTY_NAME = "org.onap.appc.adaptor.ansible.pollInterval";
+    public static final String SOCKET_TIMEOUT_PROPERTY_NAME = "org.onap.appc.adaptor.ansible.socketTimeout";
+    public static final String TRUSTSTORE_PASS_PROPERTY_NAME = "org.onap.appc.adaptor.ansible.trustStore.trustPasswd";
 
 
 }
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapterPropertiesProvider.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptorPropertiesProvider.java
old mode 100755
new mode 100644
similarity index 95%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapterPropertiesProvider.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptorPropertiesProvider.java
index 671b1e4..024215a
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdapterPropertiesProvider.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/AnsibleAdaptorPropertiesProvider.java
@@ -24,7 +24,7 @@
 
 import java.util.Properties;
 
-public interface AnsibleAdapterPropertiesProvider {
+public interface AnsibleAdaptorPropertiesProvider {
 
     Properties getProperties();
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdapterImpl.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdaptorImpl.java
similarity index 94%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdapterImpl.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdaptorImpl.java
index bc0af27..790b10f 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdapterImpl.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdaptorImpl.java
@@ -34,8 +34,8 @@
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter;
-import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterPropertiesProvider;
+import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptor;
+import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorPropertiesProvider;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleMessageParser;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleResult;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleResultCodes;
@@ -44,24 +44,24 @@
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.utils.encryption.EncryptionTool;
 
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.*;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.*;
 
 /**
- * This class implements the {@link AnsibleAdapter} interface. This interface defines the behaviors
+ * This class implements the {@link AnsibleAdaptor} interface. This interface defines the behaviors
  * that our service provides.
  */
-public class AnsibleAdapterImpl implements AnsibleAdapter {
+public class AnsibleAdaptorImpl implements AnsibleAdaptor {
 
     /**
-     * Adapter Name
+     * Adaptor Name
      */
-    private static final String ADAPTER_NAME = "Ansible Adapter";
+    private static final String Adaptor_NAME = "Ansible Adaptor";
     private static final String APPC_EXCEPTION_CAUGHT = "APPCException caught";
 
     /**
      * The logger to be used
      */
-    private static final EELFLogger logger = EELFManager.getInstance().getLogger(AnsibleAdapterImpl.class);
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(AnsibleAdaptorImpl.class);
     private int defaultTimeout = 600 * 1000;
     private int defaultSocketTimeout = 60 * 1000;
     private int defaultPollInterval = 60 * 1000;
@@ -83,16 +83,16 @@
     /**
      * This default constructor is used as a work around because the activator wasn't getting called
      */
-    public AnsibleAdapterImpl() {
-        initialize(new AnsibleAdapterPropertiesProviderImpl());
+    public AnsibleAdaptorImpl() {
+        initialize(new AnsibleAdaptorPropertiesProviderImpl());
     }
 
     /**
-     * Instantiates a new Ansible adapter.
+     * Instantiates a new Ansible adaptor.
      *
      * @param propProvider the prop provider
      */
-    public AnsibleAdapterImpl(AnsibleAdapterPropertiesProvider propProvider) {
+    public AnsibleAdaptorImpl(AnsibleAdaptorPropertiesProvider propProvider) {
         initialize(propProvider);
     }
 
@@ -101,20 +101,20 @@
      *
      * @param mode the mode
      */
-    public AnsibleAdapterImpl(boolean mode) {
+    public AnsibleAdaptorImpl(boolean mode) {
         testMode = mode;
         testServer = new AnsibleServerEmulator();
         messageProcessor = new AnsibleMessageParser();
     }
 
     /**
-     * Returns the symbolic name of the adapter
+     * Returns the symbolic name of the adaptor
      *
-     * @return The adapter name
+     * @return The adaptor name
      */
     @Override
-    public String getAdapterName() {
-        return ADAPTER_NAME;
+    public String getAdaptorName() {
+        return Adaptor_NAME;
     }
 
     @SuppressWarnings("static-method")
@@ -122,13 +122,13 @@
         svcLogic.markFailed();
         svcLogic.setAttribute(RESULT_CODE_ATTRIBUTE_NAME, Integer.toString(code));
         svcLogic.setAttribute(MESSAGE_ATTRIBUTE_NAME, message);
-        throw new SvcLogicException("Ansible Adapter Error = " + message);
+        throw new SvcLogicException("Ansible Adaptor Error = " + message);
     }
 
     /**
-     * initialize the Ansible adapter based on default and over-ride configuration data
+     * initialize the Ansible adaptor based on default and over-ride configuration data
      */
-    private void initialize(AnsibleAdapterPropertiesProvider propProvider) {
+    private void initialize(AnsibleAdaptorPropertiesProvider propProvider) {
         Properties props = propProvider.getProperties();
         // Create the message processor instance
         messageProcessor = new AnsibleMessageParser();
@@ -157,7 +157,7 @@
             defaultPollInterval = 60 * 1000;
             logger.error("Error while reading poll interval property", e);
         }
-        logger.info("Initialized Ansible Adapter");
+        logger.info("Initialized Ansible Adaptor");
     }
 
     private ConnectionBuilder getHttpConn(int timeout, String serverIP) {
@@ -173,7 +173,7 @@
         }
         // Create the http client instance
         // type of client is extracted from the property file parameter
-        // org.onap.appc.adapter.ansible.clientType
+        // org.onap.appc.adaptor.ansible.clientType
         // It can be :
         // 1. TRUST_ALL (trust all SSL certs). To be used ONLY in dev
         // 2. TRUST_CERT (trust only those whose certificates have been stored in the trustStore file)
@@ -207,9 +207,9 @@
 
     // Public Method to post request to execute playbook. Posts the following back
     // to Svc context memory
-    //  org.onap.appc.adapter.ansible.req.code : 100 if successful
-    //  org.onap.appc.adapter.ansible.req.messge : any message
-    //  org.onap.appc.adapter.ansible.req.Id : a unique uuid to reference the request
+    //  org.onap.appc.adaptor.ansible.req.code : 100 if successful
+    //  org.onap.appc.adaptor.ansible.req.messge : any message
+    //  org.onap.appc.adaptor.ansible.req.Id : a unique uuid to reference the request
     @Override
     public void reqExec(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
         String playbookName = StringUtils.EMPTY;
@@ -401,7 +401,7 @@
      * Public method to query status of a specific request It blocks till the Ansible Server
      * responds or the session times out (non-Javadoc)
      *
-     * @see org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter#reqExecResult(java.util.Map,
+     * @see org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptor#reqExecResult(java.util.Map,
      * org.onap.ccsdk.sli.core.sli.SvcLogicContext)
      */
     @Override
@@ -498,7 +498,7 @@
      * Public method to get logs from playbook execution for a specific request
      * <p>
      * It blocks till the Ansible Server responds or the session times out very similar to
-     * reqExecResult logs are returned in the DG context variable org.onap.appc.adapter.ansible.log
+     * reqExecResult logs are returned in the DG context variable org.onap.appc.adaptor.ansible.log
      */
     @Override
     public void reqExecLog(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
@@ -518,7 +518,7 @@
      * Public method to get output from playbook execution for a specific request
      * <p>
      * It blocks till the Ansible Server responds or the session times out very similar to
-     * reqExecResult and output is returned in the DG context variable org.onap.appc.adapter.ansible.output
+     * reqExecResult and output is returned in the DG context variable org.onap.appc.adaptor.ansible.output
      */
     @Override
     public void reqExecOutput(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdapterPropertiesProviderImpl.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdaptorPropertiesProviderImpl.java
old mode 100755
new mode 100644
similarity index 85%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdapterPropertiesProviderImpl.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdaptorPropertiesProviderImpl.java
index e465e13..d33fdd8
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdapterPropertiesProviderImpl.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/AnsibleAdaptorPropertiesProviderImpl.java
@@ -30,7 +30,7 @@
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
-import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterPropertiesProvider;
+import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorPropertiesProvider;
 import org.onap.ccsdk.sli.core.sli.ConfigurationException;
 import org.onap.ccsdk.sli.core.utils.JREFileResolver;
 import org.onap.ccsdk.sli.core.utils.KarafRootFileResolver;
@@ -56,19 +56,19 @@
  * directory</li>
  * </ol>
  */
-public class AnsibleAdapterPropertiesProviderImpl implements AnsibleAdapterPropertiesProvider {
+public class AnsibleAdaptorPropertiesProviderImpl implements AnsibleAdaptorPropertiesProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AnsibleAdapterPropertiesProviderImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AnsibleAdaptorPropertiesProviderImpl.class);
 
     /**
      * The name of the properties file for database configuration
      */
-    private static final String ANSIBLE_ADAPTER_PROPERTIES = "ansible-adapter.properties";
+    private static final String ANSIBLE_Adaptor_PROPERTIES = "ansible-adaptor.properties";
 
     /**
      * A prioritized list of strategies for resolving sql-resource properties files.
      */
-    private final List<PropertiesFileResolver> ansibleAdapterPropertiesFileResolvers = new ArrayList<>();
+    private final List<PropertiesFileResolver> ansibleAdaptorPropertiesFileResolvers = new ArrayList<>();
 
     /**
      * The configuration properties for the db connection.
@@ -79,14 +79,14 @@
      * Set up the prioritized list of strategies for resolving dblib properties
      * files.
      */
-    public AnsibleAdapterPropertiesProviderImpl() {
-        ansibleAdapterPropertiesFileResolvers
+    public AnsibleAdaptorPropertiesProviderImpl() {
+        ansibleAdaptorPropertiesFileResolvers
                 .add(new SdncConfigEnvVarFileResolver("Using property file (1) from environment variable"));
-        ansibleAdapterPropertiesFileResolvers
+        ansibleAdaptorPropertiesFileResolvers
                 .add(new CoreDefaultFileResolver("Using property file (2) from default directory"));
-        ansibleAdapterPropertiesFileResolvers
-                .add(new JREFileResolver("Using property file (3) from JRE argument", AnsibleAdapterPropertiesProviderImpl.class));
-        ansibleAdapterPropertiesFileResolvers
+        ansibleAdaptorPropertiesFileResolvers
+                .add(new JREFileResolver("Using property file (3) from JRE argument", AnsibleAdaptorPropertiesProviderImpl.class));
+        ansibleAdaptorPropertiesFileResolvers
                 .add(new KarafRootFileResolver("Using property file (4) from karaf root", this));
 
         // determines properties file as according to the priority described in the
@@ -102,7 +102,7 @@
             }
         } else {
             // Try to read properties as resource
-            InputStream propStr = getClass().getResourceAsStream("/" + ANSIBLE_ADAPTER_PROPERTIES);
+            InputStream propStr = getClass().getResourceAsStream("/" + ANSIBLE_Adaptor_PROPERTIES);
             if (propStr != null) {
                 properties = new EnvProperties();
                 try {
@@ -115,20 +115,20 @@
         }
         if (properties == null) {
             reportFailure(new ConfigurationException(
-                    "Missing configuration properties resource(3): " + ANSIBLE_ADAPTER_PROPERTIES));
-            LOG.info("Defaulting org.onap.appc.adapter.ansible.clientType to TRUST_ALL");
+                    "Missing configuration properties resource(3): " + ANSIBLE_Adaptor_PROPERTIES));
+            LOG.info("Defaulting org.onap.appc.adaptor.ansible.clientType to TRUST_ALL");
             properties = new Properties();
-            properties.setProperty("org.onap.appc.adapter.ansible.clientType", "TRUST_ALL");
+            properties.setProperty("org.onap.appc.adaptor.ansible.clientType", "TRUST_ALL");
         }
 
     }
 
     /**
-     * Instantiates a new Ansible adapter properties provider.
+     * Instantiates a new Ansible adaptor properties provider.
      *
      * @param configFilePath the config file path
      */
-    public AnsibleAdapterPropertiesProviderImpl(String configFilePath) {
+    public AnsibleAdaptorPropertiesProviderImpl(String configFilePath) {
         properties = new EnvProperties();
         try {
             properties.load(new FileInputStream(configFilePath));
@@ -137,10 +137,10 @@
         }
         if (properties == null) {
             reportFailure(new ConfigurationException(
-                    "Missing configuration properties resource(3): " + ANSIBLE_ADAPTER_PROPERTIES));
-            LOG.info("Defaulting org.onap.appc.adapter.ansible.clientType to TRUST_ALL");
+                    "Missing configuration properties resource(3): " + ANSIBLE_Adaptor_PROPERTIES));
+            LOG.info("Defaulting org.onap.appc.adaptor.ansible.clientType to TRUST_ALL");
             properties = new Properties();
-            properties.setProperty("org.onap.appc.adapter.ansible.clientType", "TRUST_ALL");
+            properties.setProperty("org.onap.appc.adaptor.ansible.clientType", "TRUST_ALL");
         }
 
     }
@@ -195,8 +195,8 @@
      * </ol>
      */
     File determinePropertiesFile() {
-        for (final PropertiesFileResolver propertiesFileResolver : ansibleAdapterPropertiesFileResolvers) {
-            final Optional<File> fileOptional = propertiesFileResolver.resolveFile(ANSIBLE_ADAPTER_PROPERTIES);
+        for (final PropertiesFileResolver propertiesFileResolver : ansibleAdaptorPropertiesFileResolvers) {
+            final Optional<File> fileOptional = propertiesFileResolver.resolveFile(ANSIBLE_Adaptor_PROPERTIES);
             if (fileOptional.isPresent()) {
                 return reportSuccess(propertiesFileResolver.getSuccessfulResolutionMessage(), fileOptional);
             }
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/ConnectionBuilder.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/ConnectionBuilder.java
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/ConnectionBuilder.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/impl/ConnectionBuilder.java
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleMessageParser.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleMessageParser.java
similarity index 97%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleMessageParser.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleMessageParser.java
index e448f1c..3294fab 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleMessageParser.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleMessageParser.java
@@ -33,12 +33,12 @@
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants;
+import org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.*;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.*;
 
 /**
  * Class that validates and constructs requests sent/received from
@@ -56,7 +56,7 @@
      * a) validates if all parameters are appropriate (else, throws an exception) and
      * b) if correct returns a JSON object with appropriate key-value pairs to send to the server.
      * <p>
-     * Mandatory parameters, that must be in the supplied information to the Ansible Adapter
+     * Mandatory parameters, that must be in the supplied information to the Ansible Adaptor
      * 1. URL to connect to
      * 2. credentials for URL (assume user pswd for now)
      * 3. Playbook name
@@ -333,15 +333,15 @@
     private void throwIfMissingMandatoryParam(Map<String, String> params, String key) throws SvcLogicException {
         if (!params.containsKey(key)) {
             throw new SvcLogicException(String.format(
-                    "Ansible: Mandatory AnsibleAdapter key %s not found in parameters provided by calling agent !", key));
+                    "Ansible: Mandatory AnsibleAdaptor key %s not found in parameters provided by calling agent !", key));
         }
         if (Strings.isNullOrEmpty(params.get(key))) {
             throw new SvcLogicException(String.format(
-                    "Ansible: Mandatory AnsibleAdapter key %s not found in parameters provided by calling agent !", key));
+                    "Ansible: Mandatory AnsibleAdaptor key %s not found in parameters provided by calling agent !", key));
         }
         if (StringUtils.startsWith(params.get(key), "$")) {
             throw new SvcLogicException(String.format(
-                    "Ansible: Mandatory AnsibleAdapter key %s is a variable", key));
+                    "Ansible: Mandatory AnsibleAdaptor key %s is a variable", key));
         }
     }
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResult.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResult.java
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResult.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResult.java
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResultCodes.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResultCodes.java
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResultCodes.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleResultCodes.java
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleServerEmulator.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleServerEmulator.java
similarity index 95%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleServerEmulator.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleServerEmulator.java
index a10a0ae..b850f3f 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleServerEmulator.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/java/org/onap/ccsdk/sli/adaptors/ansible/model/AnsibleServerEmulator.java
@@ -30,9 +30,9 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.PLAYBOOK_NAME;
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.STATUS_CODE;
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.STATUS_MESSAGE;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.PLAYBOOK_NAME;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.STATUS_CODE;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.STATUS_MESSAGE;
 
 public class AnsibleServerEmulator {
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adapter-blueprint.xml b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adaptor-blueprint.xml
old mode 100755
new mode 100644
similarity index 87%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adapter-blueprint.xml
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adaptor-blueprint.xml
index 76abc82..45e5ba4
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adapter-blueprint.xml
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adaptor-blueprint.xml
@@ -25,15 +25,15 @@
            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.ansible.impl.AnsibleAdapterPropertiesProviderImpl"/>
+    <bean id="propProvider" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorPropertiesProviderImpl"/>
 
-    <bean id="ansibleAdapterInstance" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterImpl">
+    <bean id="ansibleAdaptorInstance" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorImpl">
         <argument ref="propProvider"/>
     </bean>
 
-    <service ref="ansibleAdapterInstance">
+    <service ref="ansibleAdaptorInstance">
         <interfaces>
-            <value>org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter</value>
+            <value>org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptor</value>
         </interfaces>
     </service>
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/ansible-adapter.properties b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/ansible-adaptor.properties
similarity index 85%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/ansible-adapter.properties
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/ansible-adaptor.properties
index 8def3da..ace7e85 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/ansible-adapter.properties
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/ansible-adaptor.properties
@@ -21,7 +21,7 @@
 
 ###
 #
-# Default properties for the APP-C Provider Adapter
+# Default properties for the APP-C Provider Adaptor
 #
 # -------------------------------------------------------------------------------------------------
 #
@@ -34,9 +34,9 @@
 # Define the message resource bundle name to be loaded
 org.onap.appc.resources=org/onap/appc/i18n/MessageResources
 #
-# The name of the adapter.
-org.onap.appc.provider.adaptor.name=org.onap.appc.appc_ansible_adapter
+# The name of the adaptor.
+org.onap.appc.provider.adaptor.name=org.onap.appc.appc_ansible_adaptor
 # Default truststore path and password
-org.onap.appc.adapter.ansible.trustStore=/opt/opendaylight/tls-client/mykeystore.js
-org.onap.appc.adapter.ansible.trustStore.trustPasswd=changeit
-org.onap.appc.adapter.ansible.clientType=TRUST_ALL
+org.onap.appc.adaptor.ansible.trustStore=/opt/opendaylight/tls-client/mykeystore.js
+org.onap.appc.adaptor.ansible.trustStore.trustPasswd=changeit
+org.onap.appc.adaptor.ansible.clientType=TRUST_ALL
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adapter-blueprint.xml b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/org/opendaylight/blueprint/ansible-adaptor-blueprint.xml
old mode 100755
new mode 100644
similarity index 87%
copy from adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adapter-blueprint.xml
copy to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/org/opendaylight/blueprint/ansible-adaptor-blueprint.xml
index 76abc82..45e5ba4
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/main/resources/OSGI-INF/blueprint/ansible-adapter-blueprint.xml
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/main/resources/org/opendaylight/blueprint/ansible-adaptor-blueprint.xml
@@ -25,15 +25,15 @@
            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.ansible.impl.AnsibleAdapterPropertiesProviderImpl"/>
+    <bean id="propProvider" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorPropertiesProviderImpl"/>
 
-    <bean id="ansibleAdapterInstance" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterImpl">
+    <bean id="ansibleAdaptorInstance" class="org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorImpl">
         <argument ref="propProvider"/>
     </bean>
 
-    <service ref="ansibleAdapterInstance">
+    <service ref="ansibleAdaptorInstance">
         <interfaces>
-            <value>org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter</value>
+            <value>org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptor</value>
         </interfaces>
     </service>
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterImpl.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestAnsibleAdaptorImpl.java
similarity index 80%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterImpl.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestAnsibleAdaptorImpl.java
index be4bfd8..ee79f9e 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterImpl.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestAnsibleAdaptorImpl.java
@@ -20,7 +20,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.ansible.impl;
+package org.onap.ccsdk.ali.adaptors.ansible.impl;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -35,8 +35,8 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterImpl;
-import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterPropertiesProviderImpl;
+import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorImpl;
+import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorPropertiesProviderImpl;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleMessageParser;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleResult;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
@@ -47,9 +47,9 @@
 import static org.junit.Assert.assertNotNull;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.when;
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.*;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.*;
 @RunWith(MockitoJUnitRunner.class)
-public class TestAnsibleAdapterImpl {
+public class TestAnsibleAdaptorImpl {
 
     private static final String PENDING = "100";
     private static final String AGENT_URL = "https://192.168.1.1";
@@ -58,9 +58,9 @@
     private static Properties properties;
     private boolean testMode = true;
 
-    private AnsibleAdapterImpl adapter;
+    private AnsibleAdaptorImpl adaptor;
     private AnsibleResult result;
-    private AnsibleAdapterImpl spyAdapter;
+    private AnsibleAdaptorImpl spyAdaptor;
     private Map<String, String> params;
     private SvcLogicContext svcContext;
     private JSONObject jsonPayload;
@@ -70,8 +70,8 @@
 
     @BeforeClass
     public static void once() {
-        properties = new AnsibleAdapterPropertiesProviderImpl().getProperties();
-        KEYSTORE_PSWD = properties.getProperty("org.onap.appc.adapter.ansible.trustStore.trustPasswd");
+        properties = new AnsibleAdaptorPropertiesProviderImpl().getProperties();
+        KEYSTORE_PSWD = properties.getProperty("org.onap.appc.adaptor.ansible.trustStore.trustPasswd");
     }
 
     /**
@@ -82,7 +82,7 @@
     public void setup() {
         testMode = true;
         svcContext = new SvcLogicContext();
-        adapter = new AnsibleAdapterImpl(testMode);
+        adaptor = new AnsibleAdaptorImpl(testMode);
         params = new HashMap<>();
         params.put("AgentUrl", AGENT_URL);
         jsonPayload = new JSONObject();
@@ -96,14 +96,14 @@
         result.setStatusMessage("Success");
         result.setResults("Success");
         result.setOutput("{}");
-        Whitebox.setInternalState(adapter, "messageProcessor", messageProcessor);
-        spyAdapter = Mockito.spy(adapter);
+        Whitebox.setInternalState(adaptor, "messageProcessor", messageProcessor);
+        spyAdaptor = Mockito.spy(adaptor);
     }
 
     @After
     public void tearDown() {
         testMode = false;
-        adapter = null;
+        adaptor = null;
         params = null;
         svcContext = null;
     }
@@ -113,7 +113,7 @@
         result.setStatusCode(Integer.parseInt(PENDING));
         when(messageProcessor.reqMessage(params)).thenReturn(jsonPayload);
         when(messageProcessor.parsePostResponse(anyString())).thenReturn(result);
-        spyAdapter.reqExec(params, svcContext);
+        spyAdaptor.reqExec(params, svcContext);
         assertEquals(PENDING, svcContext.getAttribute(RESULT_CODE_ATTRIBUTE_NAME));
     }
 
@@ -123,7 +123,7 @@
         result.setStatusMessage(SUCCESS);
         when(messageProcessor.reqUriResult(params)).thenReturn(AGENT_URL);
         when(messageProcessor.parseGetResponse(anyString())).thenReturn(result);
-        spyAdapter.reqExecResult(params, svcContext);
+        spyAdaptor.reqExecResult(params, svcContext);
         assertEquals(SUCCESS, svcContext.getAttribute(SUCCESS));
     }
     @Test(expected = SvcLogicException.class)
@@ -137,27 +137,27 @@
         result.setOutput(cData.toString());
         when(messageProcessor.reqUriResult(params)).thenReturn(AGENT_URL);
         when(messageProcessor.parseGetResponse(anyString())).thenReturn(result);
-        adapter.reqExecResult(params, svcContext);
+        adaptor.reqExecResult(params, svcContext);
     }
 
     @Test(expected = SvcLogicException.class)
     public void reqExecResult_SvcLogicException() throws SvcLogicException {
         when(messageProcessor.reqUriResult(params)).thenThrow(new SvcLogicException());
-        adapter.reqExecResult(params, svcContext);
+        adaptor.reqExecResult(params, svcContext);
     }
 
     @Test(expected = SvcLogicException.class)
     public void reqExecResult_numberFormatException()
             throws IllegalStateException, IllegalArgumentException, SvcLogicException {
         when(messageProcessor.reqUriResult(params)).thenThrow(new NumberFormatException());
-        adapter.reqExecResult(params, svcContext);
+        adaptor.reqExecResult(params, svcContext);
     }
 
     @Test
     public void reqExecLog_shouldSetMessage() throws SvcLogicException {
         params.put("Id", "101");
         when(messageProcessor.reqUriLog(params)).thenReturn(AGENT_URL);
-        adapter.reqExecLog(params, svcContext);
+        adaptor.reqExecLog(params, svcContext);
         String message = getResponseMessage();
         assertEquals(message, svcContext.getAttribute(LOG_ATTRIBUTE_NAME));
     }
@@ -182,58 +182,58 @@
     public void reqExecException()
             throws IllegalStateException, IllegalArgumentException, SvcLogicException {
         when(messageProcessor.reqUriLog(params)).thenThrow(new SvcLogicException("Appc Exception"));
-        adapter.reqExecLog(params, svcContext);
+        adaptor.reqExecLog(params, svcContext);
     }
 
     @Test(expected = SvcLogicException.class)
     public void reqExec_SvcLogicException()
             throws IllegalStateException, IllegalArgumentException, SvcLogicException {
         when(messageProcessor.reqMessage(params)).thenThrow(new SvcLogicException());
-        adapter.reqExec(params, svcContext);
+        adaptor.reqExec(params, svcContext);
     }
 
     @Test(expected = SvcLogicException.class)
     public void reqExec_JsonException()
             throws IllegalStateException, IllegalArgumentException, SvcLogicException {
         when(messageProcessor.reqMessage(params)).thenThrow(new JSONException("Json Exception"));
-        adapter.reqExec(params, svcContext);
+        adaptor.reqExec(params, svcContext);
     }
 
     @Test(expected = SvcLogicException.class)
     public void reqExec_NumberFormatException()
             throws IllegalStateException, IllegalArgumentException, SvcLogicException {
         when(messageProcessor.reqMessage(params)).thenThrow(new NumberFormatException("Numbre Format Exception"));
-        adapter.reqExec(params, svcContext);
+        adaptor.reqExec(params, svcContext);
     }
 
     @Test
     public void testInitializeWithDefault() {
-        properties.setProperty("org.onap.appc.adapter.ansible.clientType", "");
-        adapter = new AnsibleAdapterImpl();
-        assertNotNull(adapter);
+        properties.setProperty("org.onap.appc.adaptor.ansible.clientType", "");
+        adaptor = new AnsibleAdaptorImpl();
+        assertNotNull(adaptor);
     }
 
     @Test
     public void testInitializeWithTrustAll() {
-        properties.setProperty("org.onap.appc.adapter.ansible.clientType", "TRUST_ALL");
-        adapter = new AnsibleAdapterImpl();
-        assertNotNull(adapter);
+        properties.setProperty("org.onap.appc.adaptor.ansible.clientType", "TRUST_ALL");
+        adaptor = new AnsibleAdaptorImpl();
+        assertNotNull(adaptor);
     }
 
     @Test
     public void testInitializeWithTrustCert() {
-        properties.setProperty("org.onap.appc.adapter.ansible.clientType", "TRUST_CERT");
-        properties.setProperty("org.onap.appc.adapter.ansible.trustStore.trustPasswd", KEYSTORE_PSWD);
-        adapter = new AnsibleAdapterImpl();
-        assertNotNull(adapter);
+        properties.setProperty("org.onap.appc.adaptor.ansible.clientType", "TRUST_CERT");
+        properties.setProperty("org.onap.appc.adaptor.ansible.trustStore.trustPasswd", KEYSTORE_PSWD);
+        adaptor = new AnsibleAdaptorImpl();
+        assertNotNull(adaptor);
     }
 
     @Test
     public void testInitializeWithException() {
-        properties.setProperty("org.onap.appc.adapter.ansible.clientType", "TRUST_CERT");
-        properties.setProperty("org.onap.appc.adapter.ansible.trustStore.trustPasswd", "appc");
-        adapter = new AnsibleAdapterImpl();
-        assertNotNull(adapter);
+        properties.setProperty("org.onap.appc.adaptor.ansible.clientType", "TRUST_CERT");
+        properties.setProperty("org.onap.appc.adaptor.ansible.trustStore.trustPasswd", "appc");
+        adaptor = new AnsibleAdaptorImpl();
+        assertNotNull(adaptor);
     }
 
 }
\ No newline at end of file
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterPropertiesProviderImpl.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestAnsibleAdaptorPropertiesProviderImpl.java
similarity index 84%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterPropertiesProviderImpl.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestAnsibleAdaptorPropertiesProviderImpl.java
index 5ce1712..7fba32e 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterPropertiesProviderImpl.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestAnsibleAdaptorPropertiesProviderImpl.java
@@ -20,24 +20,24 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.ansible.impl;
+package org.onap.ccsdk.ali.adaptors.ansible.impl;
 
 import java.io.File;
 import java.util.Properties;
 import org.junit.Test;
-import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterPropertiesProviderImpl;
+import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorPropertiesProviderImpl;
 
 import static org.junit.Assert.assertEquals;
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.*;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.*;
 
-public class TestAnsibleAdapterPropertiesProviderImpl {
+public class TestAnsibleAdaptorPropertiesProviderImpl {
 
     @Test
     public void testGetProperties() throws IllegalStateException, IllegalArgumentException {
-        Properties prop = new AnsibleAdapterPropertiesProviderImpl().getProperties();
+        Properties prop = new AnsibleAdaptorPropertiesProviderImpl().getProperties();
 
         assertEquals("TRUST_ALL", prop.getProperty(CLIENT_TYPE_PROPERTY_NAME));
-        assertEquals("org.onap.appc.appc_ansible_adapter", prop.getProperty("org.onap.appc.provider.adaptor.name"));
+        assertEquals("org.onap.appc.appc_ansible_adaptor", prop.getProperty("org.onap.appc.provider.adaptor.name"));
         assertEquals("changeit", prop.getProperty(TRUSTSTORE_PASS_PROPERTY_NAME));
         assertEquals("${user.home},/opt/opendaylight/current/properties,.", prop.getProperty("org.onap.appc.bootstrap.path"));
         assertEquals("APPC", prop.getProperty("appc.application.name"));
@@ -48,11 +48,11 @@
 
     @Test
     public void testGetTestProperties() throws IllegalStateException, IllegalArgumentException {
-        final String configFilePath = "src/test/resources/properties/ansible-adapter-test.properties".replace("/", File.separator);
-        Properties prop = new AnsibleAdapterPropertiesProviderImpl(configFilePath).getProperties();
+        final String configFilePath = "src/test/resources/properties/ansible-adaptor-test.properties".replace("/", File.separator);
+        Properties prop = new AnsibleAdaptorPropertiesProviderImpl(configFilePath).getProperties();
 
         assertEquals("appc", prop.getProperty(CLIENT_TYPE_PROPERTY_NAME));
-        assertEquals("org.onap.appc.appc_ansible_adapter", prop.getProperty("org.onap.appc.provider.adaptor.name"));
+        assertEquals("org.onap.appc.appc_ansible_adaptor", prop.getProperty("org.onap.appc.provider.adaptor.name"));
         assertEquals("Aa123456", prop.getProperty(TRUSTSTORE_PASS_PROPERTY_NAME));
         assertEquals("${user.home},/opt/opendaylight/current/properties,.", prop.getProperty("org.onap.appc.bootstrap.path"));
         assertEquals("APPC", prop.getProperty("appc.application.name"));
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestConnectionBuilder.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestConnectionBuilder.java
similarity index 94%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestConnectionBuilder.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestConnectionBuilder.java
index 25f8986..ae50c01 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestConnectionBuilder.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/impl/TestConnectionBuilder.java
@@ -20,7 +20,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.ansible.impl;
+package org.onap.ccsdk.ali.adaptors.ansible.impl;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -45,7 +45,7 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdapterPropertiesProviderImpl;
+import org.onap.ccsdk.sli.adaptors.ansible.impl.AnsibleAdaptorPropertiesProviderImpl;
 import org.onap.ccsdk.sli.adaptors.ansible.impl.ConnectionBuilder;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleResult;
 import org.onap.ccsdk.sli.adaptors.ansible.model.AnsibleResultCodes;
@@ -59,7 +59,7 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapterConstants.*;
+import static org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdaptorConstants.*;
 
 @RunWith(MockitoJUnitRunner.class)
 public class TestConnectionBuilder {
@@ -94,15 +94,15 @@
      */
     @BeforeClass
     public static void once() {
-        final String configFilePath = "src/test/resources/properties/ansible-adapter-test.properties".replace("/", File.separator);
-        Properties properties = new AnsibleAdapterPropertiesProviderImpl(configFilePath).getProperties();
+        final String configFilePath = "src/test/resources/properties/ansible-adaptor-test.properties".replace("/", File.separator);
+        Properties properties = new AnsibleAdaptorPropertiesProviderImpl(configFilePath).getProperties();
 
         KEYSTORE_FILE = properties.getProperty(TRUSTSTORE_PROPERTY_NAME);
         KEYSTORE_PSWD = properties.getProperty(TRUSTSTORE_PASS_PROPERTY_NAME);
-        KEYSTORE_CERTIFICATE = properties.getProperty("org.onap.appc.adapter.ansible.cert");
-        USER = properties.getProperty("org.onap.appc.adapter.ansible.username");
-        PSWD = properties.getProperty("org.onap.appc.adapter.ansible.password");
-        URL = properties.getProperty("org.onap.appc.adapter.ansible.identity");
+        KEYSTORE_CERTIFICATE = properties.getProperty("org.onap.appc.adaptor.ansible.cert");
+        USER = properties.getProperty("org.onap.appc.adaptor.ansible.username");
+        PSWD = properties.getProperty("org.onap.appc.adaptor.ansible.password");
+        URL = properties.getProperty("org.onap.appc.adaptor.ansible.identity");
     }
 
     @Before
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleAdapter.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleAdaptor.java
similarity index 97%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleAdapter.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleAdaptor.java
index 3e1929b..a4dc7d4 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleAdapter.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleAdaptor.java
@@ -20,7 +20,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.ansible.model;
+package org.onap.ccsdk.ali.adaptors.ansible.model;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
@@ -33,7 +33,7 @@
 
 import static org.junit.Assert.assertNotNull;
 
-public class TestAnsibleAdapter {
+public class TestAnsibleAdaptor {
 
     @Test
     public void callPrivateConstructorsMethodsForCodeCoverage()
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleMessageParser.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleMessageParser.java
similarity index 99%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleMessageParser.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleMessageParser.java
index bcf18e3..9cf941d 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleMessageParser.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleMessageParser.java
@@ -20,7 +20,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.ansible.model;
+package org.onap.ccsdk.ali.adaptors.ansible.model;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleResult.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleResult.java
similarity index 96%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleResult.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleResult.java
index 301cce1..8069da0 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleResult.java
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/sli/adaptors/ansible/model/TestAnsibleResult.java
@@ -20,7 +20,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.ansible.model;
+package org.onap.ccsdk.ali.adaptors.ansible.model;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/cert b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/cert
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/cert
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/cert
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/asdc-client-cert.crt b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/org/onap/appc/asdc-client-cert.crt
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/asdc-client-cert.crt
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/org/onap/appc/asdc-client-cert.crt
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/asdc-client.jks b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/org/onap/appc/asdc-client.jks
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/asdc-client.jks
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/org/onap/appc/asdc-client.jks
Binary files differ
diff --git a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/properties/ansible-adapter-test.properties b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/properties/ansible-adaptor-test.properties
similarity index 90%
rename from adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/properties/ansible-adapter-test.properties
rename to adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/properties/ansible-adaptor-test.properties
index ef4bfb2..1e406b6 100644
--- a/adaptors/ansible-adapter/ansible-adapter-bundle/src/test/resources/properties/ansible-adapter-test.properties
+++ b/adaptors/ansible-adaptor/ansible-adaptor-bundle/src/test/resources/properties/ansible-adaptor-test.properties
@@ -21,7 +21,7 @@
 
 ###
 #
-# Default properties for the APP-C Provider Adapter
+# Default properties for the APP-C Provider Adaptor
 #
 # -------------------------------------------------------------------------------------------------
 #
@@ -31,19 +31,19 @@
 org.onap.appc.bootstrap.path=${user.home},/opt/opendaylight/current/properties,.
 appc.application.name=APPC
 #Define ansible property
-org.onap.appc.adapter.ansible.clientType=appc
-org.onap.appc.adapter.ansible.trustStore=src/test/resources/org/onap/appc/asdc-client.jks
-org.onap.appc.adapter.ansible.trustStore.trustPasswd=Aa123456
-org.onap.appc.adapter.ansible.cert=src/test/resources/org/onap/appc/asdc-client-cert.crt
-org.onap.appc.adapter.ansible.identity=http://localhost:9081/v2.0
-org.onap.appc.adapter.ansible.username=appc
-org.onap.appc.adapter.ansible.password=appc
+org.onap.appc.adaptor.ansible.clientType=appc
+org.onap.appc.adaptor.ansible.trustStore=src/test/resources/org/onap/appc/asdc-client.jks
+org.onap.appc.adaptor.ansible.trustStore.trustPasswd=Aa123456
+org.onap.appc.adaptor.ansible.cert=src/test/resources/org/onap/appc/asdc-client-cert.crt
+org.onap.appc.adaptor.ansible.identity=http://localhost:9081/v2.0
+org.onap.appc.adaptor.ansible.username=appc
+org.onap.appc.adaptor.ansible.password=appc
 #
 # Define the message resource bundle name to be loaded
 org.onap.appc.resources=org/onap/appc/i18n/MessageResources
 #
-# The name of the adapter.
-org.onap.appc.provider.adaptor.name=org.onap.appc.appc_ansible_adapter
+# The name of the adaptor.
+org.onap.appc.provider.adaptor.name=org.onap.appc.appc_ansible_adaptor
 #
 # Set up the logging environment
 #
diff --git a/adaptors/ansible-adapter/ansible-adapter-installer/pom.xml b/adaptors/ansible-adaptor/ansible-adaptor-installer/pom.xml
similarity index 97%
rename from adaptors/ansible-adapter/ansible-adapter-installer/pom.xml
rename to adaptors/ansible-adaptor/ansible-adaptor-installer/pom.xml
index ae93658..075db79 100644
--- a/adaptors/ansible-adapter/ansible-adapter-installer/pom.xml
+++ b/adaptors/ansible-adaptor/ansible-adaptor-installer/pom.xml
@@ -34,14 +34,14 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-    <artifactId>ansible-adapter-installer</artifactId>
+    <artifactId>ansible-adaptor-installer</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>ccsdk-sli-adaptors :: ${project.artifactId}</name>
 
     <properties>
-        <application.name>ccsdk-ansible-adapter</application.name>
+        <application.name>ccsdk-ansible-adaptor</application.name>
         <features.boot>${application.name}</features.boot>
         <features.repositories>mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features</features.repositories>
         <include.transitive.dependencies>false</include.transitive.dependencies>
@@ -51,7 +51,7 @@
 
         <dependency>
             <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-            <artifactId>ansible-adapter-bundle</artifactId>
+            <artifactId>ansible-adaptor-bundle</artifactId>
             <version>${project.version}</version>
         </dependency>
 
diff --git a/adaptors/ansible-adapter/ansible-adapter-installer/src/assembly/assemble_installer_zip.xml b/adaptors/ansible-adaptor/ansible-adaptor-installer/src/assembly/assemble_installer_zip.xml
similarity index 98%
rename from adaptors/ansible-adapter/ansible-adapter-installer/src/assembly/assemble_installer_zip.xml
rename to adaptors/ansible-adaptor/ansible-adaptor-installer/src/assembly/assemble_installer_zip.xml
index 322fa76..cc4aa88 100644
--- a/adaptors/ansible-adapter/ansible-adapter-installer/src/assembly/assemble_installer_zip.xml
+++ b/adaptors/ansible-adaptor/ansible-adaptor-installer/src/assembly/assemble_installer_zip.xml
@@ -9,15 +9,15 @@
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
-  
+
        http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-  
+
   ECOMP is a trademark and service mark of AT&T Intellectual Property.
   ============LICENSE_END=========================================================
   -->
@@ -28,7 +28,7 @@
 	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>
+	<id>adaptor</id>
 	<formats>
 		<format>zip</format>
 	</formats>
diff --git a/adaptors/ansible-adapter/ansible-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml b/adaptors/ansible-adaptor/ansible-adaptor-installer/src/assembly/assemble_mvnrepo_zip.xml
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
rename to adaptors/ansible-adaptor/ansible-adaptor-installer/src/assembly/assemble_mvnrepo_zip.xml
diff --git a/adaptors/ansible-adapter/ansible-adapter-installer/src/main/resources/scripts/install-feature.sh b/adaptors/ansible-adaptor/ansible-adaptor-installer/src/main/resources/scripts/install-feature.sh
similarity index 100%
rename from adaptors/ansible-adapter/ansible-adapter-installer/src/main/resources/scripts/install-feature.sh
rename to adaptors/ansible-adaptor/ansible-adaptor-installer/src/main/resources/scripts/install-feature.sh
diff --git a/adaptors/ansible-adapter/pom.xml b/adaptors/ansible-adaptor/pom.xml
similarity index 96%
rename from adaptors/ansible-adapter/pom.xml
rename to adaptors/ansible-adaptor/pom.xml
index 5fd02ba..65624ed 100644
--- a/adaptors/ansible-adapter/pom.xml
+++ b/adaptors/ansible-adaptor/pom.xml
@@ -42,22 +42,22 @@
     <description>Abstractions to interact with Ansible server via REST</description>
 
     <modules>
-        <module>ansible-adapter-bundle</module>
-        <module>ansible-adapter-installer</module>
+        <module>ansible-adaptor-bundle</module>
+        <module>ansible-adaptor-installer</module>
     </modules>
 
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>org.onap.appc</groupId>
-                <artifactId>ansible-adapter-features</artifactId>
+                <artifactId>ansible-adaptor-features</artifactId>
                 <version>${project.version}</version>
                 <type>xml</type>
                 <classifier>features</classifier>
             </dependency>
             <dependency>
                 <groupId>org.onap.appc</groupId>
-                <artifactId>ansible-adapter-provider</artifactId>
+                <artifactId>ansible-adaptor-provider</artifactId>
                 <version>${project.version}</version>
             </dependency>
         </dependencies>
diff --git a/adaptors/artifacts/pom.xml b/adaptors/artifacts/pom.xml
index 58700e0..99dba8d 100755
--- a/adaptors/artifacts/pom.xml
+++ b/adaptors/artifacts/pom.xml
@@ -32,7 +32,7 @@
             </dependency>
             <dependency>
                 <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-                <artifactId>ccsdk-ansible-adapter</artifactId>
+                <artifactId>ccsdk-ansible-adaptor</artifactId>
                 <version>${project.version}</version>
                 <type>xml</type>
                 <classifier>feature</classifier>
@@ -60,7 +60,7 @@
             </dependency>
             <dependency>
                 <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-                <artifactId>ccsdk-saltstack-adapter</artifactId>
+                <artifactId>ccsdk-saltstack-adaptor</artifactId>
                 <version>${project.version}</version>
                 <type>xml</type>
                 <classifier>feature</classifier>
@@ -84,12 +84,12 @@
             </dependency>
             <dependency>
                 <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-                <artifactId>ansible-adapter-provider</artifactId>
+                <artifactId>ansible-adaptor-provider</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-                <artifactId>ansible-adapter-installer</artifactId>
+                <artifactId>ansible-adaptor-installer</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
@@ -124,12 +124,12 @@
             </dependency>
             <dependency>
                 <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-                <artifactId>saltstack-adapter-provider</artifactId>
+                <artifactId>saltstack-adaptor-provider</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-                <artifactId>saltstack-adapter-installer</artifactId>
+                <artifactId>saltstack-adaptor-installer</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
diff --git a/adaptors/features/ccsdk-ansible-adapter/pom.xml b/adaptors/features/ccsdk-ansible-adaptor/pom.xml
similarity index 92%
rename from adaptors/features/ccsdk-ansible-adapter/pom.xml
rename to adaptors/features/ccsdk-ansible-adaptor/pom.xml
index 7b47125..ebe4bdc 100644
--- a/adaptors/features/ccsdk-ansible-adapter/pom.xml
+++ b/adaptors/features/ccsdk-ansible-adaptor/pom.xml
@@ -10,7 +10,7 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-    <artifactId>ccsdk-ansible-adapter</artifactId>
+    <artifactId>ccsdk-ansible-adaptor</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>feature</packaging>
 
@@ -29,7 +29,7 @@
 
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>ansible-adapter-bundle</artifactId>
+            <artifactId>ansible-adaptor-bundle</artifactId>
             <version>${project.version}</version>
             <exclusions>
                 <exclusion>
diff --git a/adaptors/features/ccsdk-saltstack-adapter/pom.xml b/adaptors/features/ccsdk-saltstack-adaptor/pom.xml
similarity index 91%
rename from adaptors/features/ccsdk-saltstack-adapter/pom.xml
rename to adaptors/features/ccsdk-saltstack-adaptor/pom.xml
index 7383611..c9846c8 100644
--- a/adaptors/features/ccsdk-saltstack-adapter/pom.xml
+++ b/adaptors/features/ccsdk-saltstack-adaptor/pom.xml
@@ -10,7 +10,7 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-    <artifactId>ccsdk-saltstack-adapter</artifactId>
+    <artifactId>ccsdk-saltstack-adaptor</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>feature</packaging>
 
@@ -26,7 +26,7 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>saltstack-adapter-provider</artifactId>
+            <artifactId>saltstack-adaptor-provider</artifactId>
             <version>${project.version}</version>
             <exclusions>
                 <exclusion>
diff --git a/adaptors/features/ccsdk-sli-adaptors-all/pom.xml b/adaptors/features/ccsdk-sli-adaptors-all/pom.xml
index b4c7a21..e23f8cb 100644
--- a/adaptors/features/ccsdk-sli-adaptors-all/pom.xml
+++ b/adaptors/features/ccsdk-sli-adaptors-all/pom.xml
@@ -26,15 +26,15 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>ccsdk-ansible-adapter</artifactId>
+            <artifactId>ccsdk-ansible-adaptor</artifactId>
             <version>${project.version}</version>
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
-        <!-- saltstack-adapter needs to be changed to remove dependency on app-c code
+        <!-- saltstack-adaptor needs to be changed to remove dependency on app-c code
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>ccsdk-saltstack-adapter</artifactId>
+            <artifactId>ccsdk-saltstack-adaptor</artifactId>
             <version>${project.version}</version>
             <type>xml</type>
             <classifier>features</classifier>
diff --git a/adaptors/features/installer/pom.xml b/adaptors/features/installer/pom.xml
index 37e0efb..9fbb7e8 100755
--- a/adaptors/features/installer/pom.xml
+++ b/adaptors/features/installer/pom.xml
@@ -39,7 +39,7 @@
         </dependency>
         <dependency>
             <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-            <artifactId>ccsdk-ansible-adapter</artifactId>
+            <artifactId>ccsdk-ansible-adaptor</artifactId>
             <version>${project.version}</version>
             <type>xml</type>
             <classifier>features</classifier>
@@ -130,7 +130,7 @@
         </dependency>
         <dependency>
             <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-            <artifactId>ccsdk-saltstack-adapter</artifactId>
+            <artifactId>ccsdk-saltstack-adaptor</artifactId>
             <version>${project.version}</version>
             <type>xml</type>
             <classifier>features</classifier>
diff --git a/adaptors/features/pom.xml b/adaptors/features/pom.xml
index 8019de9..0bdd284 100755
--- a/adaptors/features/pom.xml
+++ b/adaptors/features/pom.xml
@@ -18,14 +18,14 @@
 
     <modules>
         <module>ccsdk-aai-service</module>
-        <module>ccsdk-ansible-adapter</module>
+        <module>ccsdk-ansible-adaptor</module>
         <module>ccsdk-base-http</module>
         <module>ccsdk-mdsal-resource</module>
         <module>ccsdk-messagerouter-consumer</module>
         <module>ccsdk-messagerouter-publisher</module>
         <module>ccsdk-netbox-client</module>
         <module>ccsdk-resource-assignment</module>
-        <module>ccsdk-saltstack-adapter</module>
+        <module>ccsdk-saltstack-adaptor</module>
         <module>ccsdk-sql-resource</module>
         <module>ccsdk-sli-adaptors-all</module>
         <module>features-sli-adaptors</module>
diff --git a/adaptors/message-router/consumer/pom.xml b/adaptors/message-router/consumer/pom.xml
index 9c67f31..080d437 100755
--- a/adaptors/message-router/consumer/pom.xml
+++ b/adaptors/message-router/consumer/pom.xml
@@ -4,7 +4,7 @@
 
     <parent>
         <groupId>org.onap.ccsdk.sli.adaptors.messagerouter</groupId>
-        <artifactId>messagerouter-root</artifactId>
+        <artifactId>message-router</artifactId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
 
diff --git a/adaptors/message-router/pom.xml b/adaptors/message-router/pom.xml
index 2322edf..f63df64 100755
--- a/adaptors/message-router/pom.xml
+++ b/adaptors/message-router/pom.xml
@@ -10,7 +10,7 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors.messagerouter</groupId>
-    <artifactId>messagerouter-root</artifactId>
+    <artifactId>message-router</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
diff --git a/adaptors/message-router/publisher/pom.xml b/adaptors/message-router/publisher/pom.xml
index 3157a14..7a3bc96 100755
--- a/adaptors/message-router/publisher/pom.xml
+++ b/adaptors/message-router/publisher/pom.xml
@@ -4,7 +4,7 @@
 
     <parent>
         <groupId>org.onap.ccsdk.sli.adaptors.messagerouter</groupId>
-        <artifactId>messagerouter-root</artifactId>
+        <artifactId>message-router</artifactId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
 
diff --git a/adaptors/pom.xml b/adaptors/pom.xml
index 988d245..1895e6a 100755
--- a/adaptors/pom.xml
+++ b/adaptors/pom.xml
@@ -22,8 +22,8 @@
 
     <modules>
         <module>aai-service</module>
-        <module>ansible-adapter</module>
-        <module>saltstack-adapter</module>
+        <module>ansible-adaptor</module>
+        <module>saltstack-adaptor</module>
         <module>netbox-client</module>
         <module>mdsal-resource</module>
         <module>resource-assignment</module>
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java b/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
deleted file mode 100644
index 88acc19..0000000
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP : CCSDK
- * ================================================================================
- * Copyright (C) 2018 Samsung Electronics. All rights reserved.
- * ================================================================================
- *
- * =============================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.ccsdk.adapter.impl;
-
-import org.junit.After;
-import org.junit.Before;
-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.SvcLogicException;
-
-import java.util.Properties;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-public class TestSaltstackAdapterPropertiesProviderImpl {
-
-    private SaltstackAdapterImpl adapter;
-    private Properties params;
-
-
-    @Before
-    public void setup() throws IllegalArgumentException {
-        params = new Properties();
-    }
-
-    @After
-    public void tearDown() {
-        adapter = null;
-        params = null;
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesBasicPortNull() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "BASIC");
-        params.put("User", "test");
-        params.put("Password", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test(expected = SvcLogicException.class)
-    public void reqExecCommand_setPropertiesBasicPortString() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "BASIC");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "test");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesBasicSuccess() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "BASIC");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "10");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(adapter);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesSSH_CERTPortNull() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "SSH_CERT");
-        params.put("User", "test");
-        params.put("Password", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test(expected = SvcLogicException.class)
-    public void reqExecCommand_setPropertiesSSH_CERTPortString() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "SSH_CERT");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "test");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesSSH_CERTSuccess() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "SSH_CERT");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "10");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesBOTHPortNull() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "BOTH");
-        params.put("User", "test");
-        params.put("Password", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesBOTHSuccess() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "BOTH");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "10");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesNonePortNull() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "NONE");
-        params.put("User", "test");
-        params.put("Password", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesNonePortString() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "NONE");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "test");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesNoneSuccess() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.clientType", "NONE");
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "10");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-
-    @Test
-    public void reqExecCommand_setPropertiesElsePortNull() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("User", "test");
-        params.put("Password", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesElsePortString() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "test");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        assertNotNull(propProvider);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesElseSuccess() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        params.put("org.onap.appc.adapter.saltstack.host", "test");
-        params.put("org.onap.appc.adapter.saltstack.port", "10");
-        params.put("org.onap.appc.adapter.saltstack.userName", "test");
-        params.put("org.onap.appc.adapter.saltstack.userPasswd", "test");
-        params.put("org.onap.appc.adapter.saltstack.sshKey", "test");
-        SaltstackAdapterPropertiesProvider propProvider = new SaltstackAdapterPropertiesProvider() {
-            @Override
-            public Properties getProperties() {
-                return params;
-            }
-        };
-        adapter = new SaltstackAdapterImpl(propProvider);
-        String adaptorName = adapter.getAdapterName();
-        assertEquals("Saltstack Adapter", adaptorName);
-    }
-
-    @Test
-    public void reqExecCommand_setPropertiesDefault() throws SvcLogicException,
-            IllegalStateException, IllegalArgumentException {
-        adapter = new SaltstackAdapterImpl();
-        assertNotNull(adapter);
-    }
-}
diff --git a/adaptors/saltstack-adapter/.pydevproject b/adaptors/saltstack-adaptor/.pydevproject
similarity index 100%
rename from adaptors/saltstack-adapter/.pydevproject
rename to adaptors/saltstack-adaptor/.pydevproject
diff --git a/adaptors/saltstack-adapter/README.md b/adaptors/saltstack-adaptor/README.md
similarity index 91%
rename from adaptors/saltstack-adapter/README.md
rename to adaptors/saltstack-adaptor/README.md
index 9c00457..9fdf045 100644
--- a/adaptors/saltstack-adapter/README.md
+++ b/adaptors/saltstack-adaptor/README.md
@@ -37,13 +37,13 @@
 
 
 ***Defining Saltstack server properties:*** Can be done with 2 different methods. 
-1) Saltstack server details are found in the property file named saltstack-adapter.properties. Param has to be given with following types. 
-    "org.onap.appc.adapter.saltstack.clientType"; -> Supported types are (BASIC || SSH_CERT || BOTH).
-    "org.onap.appc.adapter.saltstack.host"; ->  Saltstack server's host name IP address.
-    "org.onap.appc.adapter.saltstack.port"; ->  Saltstack server's port to make SSH connection to.
-    "org.onap.appc.adapter.saltstack.userName"; ->  Saltstack server's SSH UserName.
-    "org.onap.appc.adapter.saltstack.userPasswd"; ->  Saltstack server's SSH Password.
-    "org.onap.appc.adapter.saltstack.sshKey"; ->  Saltstack server's SSH KEY file location.
+1) Saltstack server details are found in the property file named saltstack-adaptor.properties. Param has to be given with following types. 
+    "org.onap.appc.adaptor.saltstack.clientType"; -> Supported types are (BASIC || SSH_CERT || BOTH).
+    "org.onap.appc.adaptor.saltstack.host"; ->  Saltstack server's host name IP address.
+    "org.onap.appc.adaptor.saltstack.port"; ->  Saltstack server's port to make SSH connection to.
+    "org.onap.appc.adaptor.saltstack.userName"; ->  Saltstack server's SSH UserName.
+    "org.onap.appc.adaptor.saltstack.userPasswd"; ->  Saltstack server's SSH Password.
+    "org.onap.appc.adaptor.saltstack.sshKey"; ->  Saltstack server's SSH KEY file location.
 2) All the server related details can also be passed as param to the adaptor from the Directed Graphs. Param has to be given with following types. 
     "HostName";  ->  Saltstack server's host name IP address.
     "Port"; ->  Saltstack server's port to make SSH connection to.
@@ -56,7 +56,7 @@
 
 Method to execute a single command on SaltState server and execute a SLS file located on the server. The command entered should request the output in JSON format, this can be done by appending json-out outputter as specified in https://docs.saltstack.com/en/latest/ref/output/all/salt.output.json_out.html#module-salt.output.json_out and https://docs.saltstack.com/en/2017.7/ref/cli/salt-call.html 
 The response from Saltstack comes in json format and it is automatically put to context for DGs access, with a certain request-ID as prefix.
-If Id is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId. 
+If Id is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adaptor.saltstack.Id" field. All the output message from the execution will be appended with reqId. 
 1) Execute a single command on SaltState server : Example command will look like: 
 1.1) Command to test if all VNFC are running: "salt '*' test.ping --out=json --static"
 1.2) To check Network interfaces on your minions: "salt '*' network.interfaces --out=json --static"
@@ -66,9 +66,9 @@
 This "reqExecCommand" method gives the Operator/Directed Graphs to execute commands in a fine-tuned manner, which also means the operator/DG-creator should know what to expect as output as a result of command execution (for both success/failure case). 
 By this way using DGs, the operator can check for success/failure of the executed comment. 
 If the output is not in JSON format, then the adaptor still tries to convert it into properties, in addition, params that will hold the command execution result for DG access are (note: this is just to check if the command was executed successfully on the server, this doesn't check the status of the command on saltstack server): 
-Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be always be 250, means command execution was success but the result of the execution is unknown and is to be checked from ctx using DGs)
-Message at: org.onap.appc.adapter.saltstack.message
-Both user inputted/auto generated req Id at:  org.onap.appc.adapter.saltstack.Id
+Result code at: org.onap.appc.adaptor.saltstack.result.code (On success: This will be always be 250, means command execution was success but the result of the execution is unknown and is to be checked from ctx using DGs)
+Message at: org.onap.appc.adaptor.saltstack.message
+Both user inputted/auto generated req Id at:  org.onap.appc.adaptor.saltstack.Id
 To check the status of the command configuration on saltstack server: the user should exactly know what to look for in the context 
 so the user can identify if the configuration execution on the saltstack server succeded or not. 
 here for instance, in 1.1) the user should check if $reqId.<minion-name> is set to true in the context memory using DGs. 
@@ -87,9 +87,9 @@
     "Timeout"; -> set large timeout if your SLS file will take large time to finish executing (in Seconds). 
 
 In this case, params that will hold the command execution result for DG access in Key:
-Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful) 
-Message at: org.onap.appc.adapter.saltstack.message
-Both user inputted/auto generated req Id at:  org.onap.appc.adapter.saltstack.Id
+Result code at: org.onap.appc.adaptor.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful) 
+Message at: org.onap.appc.adaptor.saltstack.message
+Both user inputted/auto generated req Id at:  org.onap.appc.adaptor.saltstack.Id
 The result code here will be the execution of configuration SLS file on the server. 
 NOTE: It would be better to use reqExecSLS, where you will only have to specify SLS file name on server to execute it.
 
@@ -98,7 +98,7 @@
 
 Method to execute a single sls on SaltState server (Where the SLS file already located on the server). The command entered will only be the SLS file name and the output will be in JSON format automatically. 
 The response from Saltstack comes in json format and it is automatically put to context for DGs access, with a certain request-ID as prefix.
-If request Id (Id) is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId. 
+If request Id (Id) is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adaptor.saltstack.Id" field. All the output message from the execution will be appended with reqId. 
 1) Execute a single command on SaltState server : Example command will look like: 
     In the context set the "SlsName" to "test.sls"
     In the context set the "Timeout"; -> set large timeout if your SLS file will take large time to finish executing (in Seconds). 
@@ -108,16 +108,16 @@
     In the context set the "EnvParameters: A JSON dictionary which should list key value pairs to be passed to the Salstack command to run SLS. These values would correspond to instance specific parameters that a playbook may need to execute an action.
         
 In this case, params that will hold the command execution result for DG access in Key:
-Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful) 
-Message at: org.onap.appc.adapter.saltstack.message
-Both user inputted/auto generated req Id at:  org.onap.appc.adapter.saltstack.Id
+Result code at: org.onap.appc.adaptor.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful) 
+Message at: org.onap.appc.adaptor.saltstack.message
+Both user inputted/auto generated req Id at:  org.onap.appc.adaptor.saltstack.Id
 The result code here will be the execution of configuration SLS file on the server. 
 
 ***Using Saltstack Adaptor Commands and params to pass in: reqExecSLSFile API:***
 
 Method to execute a single sls on SaltState server (Where the SLS file in the adaptor). The command entered will only be the SLS file location on the APPC/ODL container and the output from server will be in JSON format automatically. 
 The response from Saltstack comes in json format and it is automatically put to context for DGs access, with a certain request-ID as prefix.
-If request Id (Id) is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId. 
+If request Id (Id) is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adaptor.saltstack.Id" field. All the output message from the execution will be appended with reqId. 
 1) Execute a single command on SaltState server : Example command will look like: 
     In the context set the "SlsFile" to "/path/to/test.sls" //mention the path of the SLS file in ODL container.    
     In the context set the "Timeout"; -> set large timeout if your SLS file will take large time to finish executing (in Seconds). 
@@ -127,9 +127,9 @@
     In the context set the "EnvParameters: A JSON dictionary which should list key value pairs to be passed to the Salstack command to run SLS. These values would correspond to instance specific parameters that a playbook may need to execute an action.
     
 In this case, params that will hold the command execution result for DG access in Key:
-Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful) 
-Message at: org.onap.appc.adapter.saltstack.message
-Both user inputted/auto generated req Id at:  org.onap.appc.adapter.saltstack.Id
+Result code at: org.onap.appc.adaptor.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful) 
+Message at: org.onap.appc.adaptor.saltstack.message
+Both user inputted/auto generated req Id at:  org.onap.appc.adaptor.saltstack.Id
 The result code here will be the execution of configuration SLS file on the server. 
 
 Control the state system on the minion: by specifying Env Params (pillars) and Files. 
diff --git a/adaptors/saltstack-adapter/pom.xml b/adaptors/saltstack-adaptor/pom.xml
similarity index 96%
rename from adaptors/saltstack-adapter/pom.xml
rename to adaptors/saltstack-adaptor/pom.xml
index 6a6a31c..45ed3f0 100644
--- a/adaptors/saltstack-adapter/pom.xml
+++ b/adaptors/saltstack-adaptor/pom.xml
@@ -43,8 +43,8 @@
     </description>
 
     <modules>
-        <module>saltstack-adapter-provider</module>
-        <module>saltstack-adapter-installer</module>
+        <module>saltstack-adaptor-provider</module>
+        <module>saltstack-adaptor-installer</module>
     </modules>
 
     <dependencyManagement>
@@ -52,7 +52,7 @@
 
             <dependency>
                 <groupId>org.onap.appc</groupId>
-                <artifactId>saltstack-adapter-features</artifactId>
+                <artifactId>saltstack-adaptor-features</artifactId>
                 <version>${project.version}</version>
                 <type>xml</type>
                 <classifier>features</classifier>
@@ -60,7 +60,7 @@
 
             <dependency>
                 <groupId>org.onap.appc</groupId>
-                <artifactId>saltstack-adapter-provider</artifactId>
+                <artifactId>saltstack-adaptor-provider</artifactId>
                 <version>${project.version}</version>
             </dependency>
 
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-installer/pom.xml b/adaptors/saltstack-adaptor/saltstack-adaptor-installer/pom.xml
similarity index 97%
rename from adaptors/saltstack-adapter/saltstack-adapter-installer/pom.xml
rename to adaptors/saltstack-adaptor/saltstack-adaptor-installer/pom.xml
index 9e05aeb..ff85797 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-installer/pom.xml
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-installer/pom.xml
@@ -34,14 +34,14 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-    <artifactId>saltstack-adapter-installer</artifactId>
+    <artifactId>saltstack-adaptor-installer</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>ccsdk-sli-adaptors :: ${project.artifactId}</name>
 
     <properties>
-        <application.name>ccsdk-saltstack-adapter</application.name>
+        <application.name>ccsdk-saltstack-adaptor</application.name>
         <features.boot>${application.name}</features.boot>
         <features.repositories>
             mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features
@@ -53,7 +53,7 @@
 
         <dependency>
             <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-            <artifactId>saltstack-adapter-provider</artifactId>
+            <artifactId>saltstack-adaptor-provider</artifactId>
             <version>${project.version}</version>
         </dependency>
 
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml b/adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/assembly/assemble_installer_zip.xml
similarity index 98%
rename from adaptors/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml
rename to adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/assembly/assemble_installer_zip.xml
index d307e4f..c020f0d 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/assembly/assemble_installer_zip.xml
@@ -9,15 +9,15 @@
   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=========================================================
   -->
@@ -28,7 +28,7 @@
         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>
+    <id>adaptor</id>
     <formats>
         <format>zip</format>
     </formats>
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml b/adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/assembly/assemble_mvnrepo_zip.xml
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
rename to adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/assembly/assemble_mvnrepo_zip.xml
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-installer/src/main/resources/scripts/install-feature.sh b/adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/main/resources/scripts/install-feature.sh
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-installer/src/main/resources/scripts/install-feature.sh
rename to adaptors/saltstack-adaptor/saltstack-adaptor-installer/src/main/resources/scripts/install-feature.sh
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/.gitignore b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/.gitignore
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/.gitignore
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/.gitignore
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/pom.xml b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/pom.xml
similarity index 98%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/pom.xml
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/pom.xml
index 92e3745..3f35fb4 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/pom.xml
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/pom.xml
@@ -23,7 +23,7 @@
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-    <artifactId>saltstack-adapter-provider</artifactId>
+    <artifactId>saltstack-adaptor-provider</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdapter.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdaptor.java
similarity index 92%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdapter.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdaptor.java
index 346910a..dda3338 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdapter.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdaptor.java
@@ -31,15 +31,15 @@
 import java.util.Map;
 
 /**
- * This interface defines the operations that the Saltstack adapter exposes.
+ * This interface defines the operations that the Saltstack adaptor exposes.
  */
-public interface SaltstackAdapter extends SvcLogicJavaPlugin {
+public interface SaltstackAdaptor extends SvcLogicJavaPlugin {
     /**
-     * Returns the symbolic name of the adapter
+     * Returns the symbolic name of the adaptor
      *
-     * @return The adapter name
+     * @return The adaptor name
      */
-    String getAdapterName();
+    String getAdaptorName();
 
     /* Method to post a single command request for execution on SaltState server
      *  The response from Saltstack comes in json format and it is automatically put
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdapterPropertiesProvider.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdaptorPropertiesProvider.java
old mode 100755
new mode 100644
similarity index 95%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdapterPropertiesProvider.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdaptorPropertiesProvider.java
index a6b707a..fdfc79e
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdapterPropertiesProvider.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/SaltstackAdaptorPropertiesProvider.java
@@ -26,7 +26,7 @@
 
 import java.util.Properties;
 
-public interface SaltstackAdapterPropertiesProvider {
+public interface SaltstackAdaptorPropertiesProvider {
 
     public Properties getProperties();
 }
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdaptorImpl.java
similarity index 87%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdaptorImpl.java
index 34321ea..05b1688 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdaptorImpl.java
@@ -28,8 +28,8 @@
 import com.att.eelf.configuration.EELFManager;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapter;
-import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapterPropertiesProvider;
+import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdaptor;
+import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdaptorPropertiesProvider;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackMessageParser;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResult;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResultCodes;
@@ -46,10 +46,10 @@
 import java.util.Properties;
 
 /**
- * This class implements the {@link SaltstackAdapter} interface. This interface defines the behaviors
+ * This class implements the {@link SaltstackAdaptor} interface. This interface defines the behaviors
  * that our service provides.
  */
-public class SaltstackAdapterImpl implements SaltstackAdapter {
+public class SaltstackAdaptorImpl implements SaltstackAdaptor {
 
     /**
      * The constant for the status code for a failed outcome
@@ -64,18 +64,18 @@
     public static final String CONNECTION_RETRY = "withRetry";
     private static final String APPC_EXCEPTION_CAUGHT = "APPCException caught";
     /**
-     * Adapter Name
+     * Adaptor Name
      */
-    private static final String ADAPTER_NAME = "Saltstack Adapter";
-    private static final String RESULT_CODE_ATTRIBUTE_NAME = "org.onap.appc.adapter.saltstack.result.code";
-    private static final String MESSAGE_ATTRIBUTE_NAME = "org.onap.appc.adapter.saltstack.message";
-    private static final String ID_ATTRIBUTE_NAME = "org.onap.appc.adapter.saltstack.Id";
-    private static final String CLIENT_TYPE_PROPERTY_NAME = "org.onap.appc.adapter.saltstack.clientType";
-    private static final String SS_SERVER_HOSTNAME = "org.onap.appc.adapter.saltstack.host";
-    private static final String SS_SERVER_PORT = "org.onap.appc.adapter.saltstack.port";
-    private static final String SS_SERVER_USERNAME = "org.onap.appc.adapter.saltstack.userName";
-    private static final String SS_SERVER_PASSWD = "org.onap.appc.adapter.saltstack.userPasswd";
-    private static final String SS_SERVER_SSH_KEY = "org.onap.appc.adapter.saltstack.sshKey";
+    private static final String Adaptor_NAME = "Saltstack Adaptor";
+    private static final String RESULT_CODE_ATTRIBUTE_NAME = "org.onap.appc.adaptor.saltstack.result.code";
+    private static final String MESSAGE_ATTRIBUTE_NAME = "org.onap.appc.adaptor.saltstack.message";
+    private static final String ID_ATTRIBUTE_NAME = "org.onap.appc.adaptor.saltstack.Id";
+    private static final String CLIENT_TYPE_PROPERTY_NAME = "org.onap.appc.adaptor.saltstack.clientType";
+    private static final String SS_SERVER_HOSTNAME = "org.onap.appc.adaptor.saltstack.host";
+    private static final String SS_SERVER_PORT = "org.onap.appc.adaptor.saltstack.port";
+    private static final String SS_SERVER_USERNAME = "org.onap.appc.adaptor.saltstack.userName";
+    private static final String SS_SERVER_PASSWD = "org.onap.appc.adaptor.saltstack.userPasswd";
+    private static final String SS_SERVER_SSH_KEY = "org.onap.appc.adaptor.saltstack.sshKey";
 
     private static final String COMMAND_IN_JSON_OUT = " --out=json --static ";
     private static final String COMMAND_CHANGE_DEFAULT_DIR = " cd /srv/salt/ ;";
@@ -83,7 +83,7 @@
     /**
      * The logger to be used
      */
-    private static final EELFLogger logger = EELFManager.getInstance().getLogger(SaltstackAdapterImpl.class);
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(SaltstackAdaptorImpl.class);
     /**
      * Connection object
      **/
@@ -107,32 +107,32 @@
     /**
      * This default constructor is used as a work around because the activator wasn't getting called
      */
-    public SaltstackAdapterImpl() throws SvcLogicException {
-        initialize(new SaltstackAdapterPropertiesProviderImpl());
+    public SaltstackAdaptorImpl() throws SvcLogicException {
+        initialize(new SaltstackAdaptorPropertiesProviderImpl());
     }
 
-    public SaltstackAdapterImpl(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException {
+    public SaltstackAdaptorImpl(SaltstackAdaptorPropertiesProvider propProvider) throws SvcLogicException {
         initialize(propProvider);
     }
 
     /**
      * Used for jUnit test and testing interface
      */
-    public SaltstackAdapterImpl(boolean mode) {
+    public SaltstackAdaptorImpl(boolean mode) {
         testMode = mode;
         testServer = new SaltstackServerEmulator();
         messageProcessor = new SaltstackMessageParser();
     }
 
     /**
-     * Returns the symbolic name of the adapter
+     * Returns the symbolic name of the adaptor
      *
-     * @return The adapter name
-     * @see SaltstackAdapter#getAdapterName()
+     * @return The adaptor name
+     * @see SaltstackAdaptor#getAdaptorName()
      */
     @Override
-    public String getAdapterName() {
-        return ADAPTER_NAME;
+    public String getAdaptorName() {
+        return Adaptor_NAME;
     }
 
     /**
@@ -145,13 +145,13 @@
         svcLogic.setStatus(OUTCOME_FAILURE);
         svcLogic.setAttribute(RESULT_CODE_ATTRIBUTE_NAME, Integer.toString(code));
         svcLogic.setAttribute(MESSAGE_ATTRIBUTE_NAME, message);
-        throw new SvcLogicException("Saltstack Adapter Error = " + message);
+        throw new SvcLogicException("Saltstack Adaptor Error = " + message);
     }
 
     /**
-     * initialize the Saltstack adapter based on default and over-ride configuration data
+     * initialize the Saltstack adaptor based on default and over-ride configuration data
      */
-    private void initialize(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException {
+    private void initialize(SaltstackAdaptorPropertiesProvider propProvider) throws SvcLogicException {
 
 
         Properties props = propProvider.getProperties();
@@ -161,7 +161,7 @@
 
         // Create the ssh client instance
         // type of client is extracted from the property file parameter
-        // org.onap.appc.adapter.saltstack.clientType
+        // org.onap.appc.adaptor.saltstack.clientType
         // It can be :
         // 1. BASIC. SSH Connection using username and password
         // 2. SSH_CERT (trust only those whose certificates have been stored in the SSH KEY file)
@@ -187,17 +187,17 @@
                 logger.info("Creating ssh client with ssh KEY from " + sshKey);
                 sshClient = new ConnectionBuilder(sshHost, sshPort, sshKey);
             } else {
-                logger.info("No saltstack-adapter.properties defined so reading from DG props");
+                logger.info("No saltstack-adaptor.properties defined so reading from DG props");
                 sshClient = null;
             }
         } catch (NumberFormatException e) {
-            logger.error("Error Initializing Saltstack Adapter due to Unknown Exception", e);
-            throw new SvcLogicException("Saltstack Adapter Property file parsing Error = port in property file has to be an integer.");
+            logger.error("Error Initializing Saltstack Adaptor due to Unknown Exception", e);
+            throw new SvcLogicException("Saltstack Adaptor Property file parsing Error = port in property file has to be an integer.");
         } catch (Exception e) {
-            logger.error("Error Initializing Saltstack Adapter due to Exception", e);
-            throw new SvcLogicException("Saltstack Adapter Property file parsing Error = " + e.getMessage());
+            logger.error("Error Initializing Saltstack Adaptor due to Exception", e);
+            throw new SvcLogicException("Saltstack Adaptor Property file parsing Error = " + e.getMessage());
         }
-        logger.info("Initialized Saltstack Adapter");
+        logger.info("Initialized Saltstack Adaptor");
     }
 
     private String reqServerPort(Properties props) {
@@ -210,7 +210,7 @@
 
     private void setSSHClient(Map<String, String> params) throws SvcLogicException {
         if (sshClient == null) {
-            logger.info("saltstack-adapter.properties not defined so reading saltstack host and " +
+            logger.info("saltstack-adaptor.properties not defined so reading saltstack host and " +
                                 "auth details from DG's parameters");
             String sshHost = messageProcessor.reqHostNameResult(params);
             String sshPort = messageProcessor.reqPortResult(params);
@@ -323,9 +323,9 @@
 
     // Public Method to post single command request to execute saltState. Posts the following back
     // to Svc context memory
-    //  org.onap.appc.adapter.saltstack.req.code : 100 if successful
-    //  org.onap.appc.adapter.saltstack.req.messge : any message
-    //  org.onap.appc.adapter.saltstack.req.Id : a unique uuid to reference the request
+    //  org.onap.appc.adaptor.saltstack.req.code : 100 if successful
+    //  org.onap.appc.adaptor.saltstack.req.messge : any message
+    //  org.onap.appc.adaptor.saltstack.req.Id : a unique uuid to reference the request
     @Override
     public void reqExecCommand(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
         String reqID;
@@ -350,9 +350,9 @@
      * Public Method to post SLS command request to execute saltState on server. Posts the following back
      * to Svc context memory
      * <p>
-     * org.onap.appc.adapter.saltstack.req.code : 200 if successful
-     * org.onap.appc.adapter.saltstack.req.messge : any message
-     * org.onap.appc.adapter.saltstack.req.Id : a unique uuid to reference the request
+     * org.onap.appc.adaptor.saltstack.req.code : 200 if successful
+     * org.onap.appc.adaptor.saltstack.req.messge : any message
+     * org.onap.appc.adaptor.saltstack.req.Id : a unique uuid to reference the request
      */
     @Override
     public void reqExecSLS(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
@@ -383,9 +383,9 @@
      * Public Method to post SLS file request to execute saltState. Posts the following back
      * to Svc context memory
      * <p>
-     * org.onap.appc.adapter.saltstack.req.code : 100 if successful
-     * org.onap.appc.adapter.saltstack.req.messge : any message
-     * org.onap.appc.adapter.saltstack.req.Id : a unique uuid to reference the request
+     * org.onap.appc.adaptor.saltstack.req.code : 100 if successful
+     * org.onap.appc.adaptor.saltstack.req.messge : any message
+     * org.onap.appc.adaptor.saltstack.req.Id : a unique uuid to reference the request
      */
     @Override
     public void reqExecSLSFile(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException {
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterPropertiesProviderImpl.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdaptorPropertiesProviderImpl.java
old mode 100755
new mode 100644
similarity index 85%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterPropertiesProviderImpl.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdaptorPropertiesProviderImpl.java
index 8f0d985..c5e4044
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterPropertiesProviderImpl.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdaptorPropertiesProviderImpl.java
@@ -24,7 +24,7 @@
 
 package org.onap.ccsdk.sli.adaptors.saltstack.impl;
 
-import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapterPropertiesProvider;
+import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdaptorPropertiesProvider;
 import org.onap.ccsdk.sli.core.sli.ConfigurationException;
 import org.onap.ccsdk.sli.core.utils.JREFileResolver;
 import org.onap.ccsdk.sli.core.utils.KarafRootFileResolver;
@@ -57,19 +57,19 @@
  * directory</li>
  * </ol>
  */
-public class SaltstackAdapterPropertiesProviderImpl implements SaltstackAdapterPropertiesProvider {
+public class SaltstackAdaptorPropertiesProviderImpl implements SaltstackAdaptorPropertiesProvider {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SaltstackAdapterPropertiesProviderImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(SaltstackAdaptorPropertiesProviderImpl.class);
 
     /**
      * The name of the properties file for database configuration
      */
-    private static final String SALTSTACKADAPTER_PROP_FILE_NAME = "saltstack-adapter.properties";
+    private static final String SALTSTACKAdaptor_PROP_FILE_NAME = "saltstack-adaptor.properties";
 
     /**
      * A prioritized list of strategies for resolving sql-resource properties files.
      */
-    private Vector<PropertiesFileResolver> saltstackAdapterPropertiesFileResolvers = new Vector<>();
+    private Vector<PropertiesFileResolver> saltstackAdaptorPropertiesFileResolvers = new Vector<>();
 
     /**
      * The configuration properties for the db connection.
@@ -80,14 +80,14 @@
      * Set up the prioritized list of strategies for resolving dblib properties
      * files.
      */
-    public SaltstackAdapterPropertiesProviderImpl() {
-        saltstackAdapterPropertiesFileResolvers
+    public SaltstackAdaptorPropertiesProviderImpl() {
+        saltstackAdaptorPropertiesFileResolvers
                 .add(new SdncConfigEnvVarFileResolver("Using property file (1) from environment variable"));
-        saltstackAdapterPropertiesFileResolvers.add(new CoreDefaultFileResolver("Using property file (2) from default directory"));
+        saltstackAdaptorPropertiesFileResolvers.add(new CoreDefaultFileResolver("Using property file (2) from default directory"));
 
-        saltstackAdapterPropertiesFileResolvers.add(
-                new JREFileResolver("Using property file (3) from JRE argument", SaltstackAdapterPropertiesProviderImpl.class));
-        saltstackAdapterPropertiesFileResolvers.add(new KarafRootFileResolver("Using property file (4) from karaf root", this));
+        saltstackAdaptorPropertiesFileResolvers.add(
+                new JREFileResolver("Using property file (3) from JRE argument", SaltstackAdaptorPropertiesProviderImpl.class));
+        saltstackAdaptorPropertiesFileResolvers.add(new KarafRootFileResolver("Using property file (4) from karaf root", this));
 
         // determines properties file as according to the priority described in the
         // class header comment
@@ -104,7 +104,7 @@
         } else {
             // Try to read properties as resource
 
-            InputStream propStr = getClass().getResourceAsStream("/" + SALTSTACKADAPTER_PROP_FILE_NAME);
+            InputStream propStr = getClass().getResourceAsStream("/" + SALTSTACKAdaptor_PROP_FILE_NAME);
             if (propStr != null) {
                 properties = new Properties();
                 try {
@@ -119,12 +119,12 @@
 
         if (properties == null) {
             reportFailure("Missing configuration properties resource(3)", new ConfigurationException(
-                    "Missing configuration properties resource(3): " + SALTSTACKADAPTER_PROP_FILE_NAME));
+                    "Missing configuration properties resource(3): " + SALTSTACKAdaptor_PROP_FILE_NAME));
 
-            LOG.info("Defaulting org.onap.appc.adapter.saltstack.clientType to NONE");
+            LOG.info("Defaulting org.onap.appc.adaptor.saltstack.clientType to NONE");
 
             properties = new Properties();
-            properties.setProperty("org.onap.appc.adapter.saltstack.clientType", "NONE");
+            properties.setProperty("org.onap.appc.adaptor.saltstack.clientType", "NONE");
         }
     }
 
@@ -178,10 +178,10 @@
      * directory</li>
      * </ol>
      */
-    File determinePropertiesFile(final SaltstackAdapterPropertiesProviderImpl resourceProvider) {
+    File determinePropertiesFile(final SaltstackAdaptorPropertiesProviderImpl resourceProvider) {
 
-        for (final PropertiesFileResolver sliPropertiesFileResolver : saltstackAdapterPropertiesFileResolvers) {
-            final Optional<File> fileOptional = sliPropertiesFileResolver.resolveFile(SALTSTACKADAPTER_PROP_FILE_NAME);
+        for (final PropertiesFileResolver sliPropertiesFileResolver : saltstackAdaptorPropertiesFileResolvers) {
+            final Optional<File> fileOptional = sliPropertiesFileResolver.resolveFile(SALTSTACKAdaptor_PROP_FILE_NAME);
             if (fileOptional.isPresent()) {
                 return reportSuccess(sliPropertiesFileResolver.getSuccessfulResolutionMessage(), fileOptional);
             }
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/Constants.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/Constants.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/Constants.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/Constants.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/JsonParser.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/JsonParser.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/JsonParser.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/JsonParser.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
similarity index 98%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
index 3bb401a..03b3eeb 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
@@ -400,12 +400,12 @@
     private void throwIfMissingMandatoryParam(Map<String, String> params, String key) throws SvcLogicException {
         if (!params.containsKey(key)) {
             throw new SvcLogicException(String.format(
-                    "Saltstack: Mandatory SaltstackAdapter key %s not found in parameters provided by calling agent !",
+                    "Saltstack: Mandatory SaltstackAdaptor key %s not found in parameters provided by calling agent !",
                     key));
         }
         if (Strings.isNullOrEmpty(params.get(key))) {
             throw new SvcLogicException(String.format(
-                    "Saltstack: Mandatory SaltstackAdapter key %s not found in parameters provided by calling agent !",
+                    "Saltstack: Mandatory SaltstackAdaptor key %s not found in parameters provided by calling agent !",
                     key));
         }
     }
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResultCodes.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResultCodes.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResultCodes.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResultCodes.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SshException.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SshException.java
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SshException.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SshException.java
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adaptor-blueprint.xml
old mode 100755
new mode 100644
similarity index 90%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adaptor-blueprint.xml
index e360f81..b614d29
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adaptor-blueprint.xml
@@ -25,16 +25,16 @@
            odl:use-default-for-reference-types="true">
 
     <bean id="propProvider"
-          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterPropertiesProviderImpl"/>
+          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdaptorPropertiesProviderImpl"/>
 
-    <bean id="saltstackAdapterInstance"
-          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl">
+    <bean id="saltstackAdaptorInstance"
+          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdaptorImpl">
         <argument ref="propProvider"/>
     </bean>
 
-    <service ref="saltstackAdapterInstance">
+    <service ref="saltstackAdaptorInstance">
         <interfaces>
-            <value>org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapter
+            <value>org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdaptor
             </value>
         </interfaces>
     </service>
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/resources/saltstack-adaptor.properties
similarity index 85%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/resources/saltstack-adaptor.properties
index 1755f7a..b37a593 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/main/resources/saltstack-adaptor.properties
@@ -22,7 +22,7 @@
 # ============LICENSE_END=========================================================
 ###
 #
-# Default properties for the APP-C TestService Adapter
+# Default properties for the APP-C TestService Adaptor
 #
 # -------------------------------------------------------------------------------------------------
 #
@@ -35,9 +35,9 @@
 # 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
+# The name of the adaptor.
+org.onap.appc.provider.adaptor.name=org.onap.appc.appc_saltstack_adaptor
 # 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
-org.onap.appc.adapter.saltstack.clientType=TRUST_ALL
+org.onap.appc.adaptor.saltstack.trustStore=/opt/opendaylight/tls-client/mykeystore.js
+org.onap.appc.adaptor.saltstack.trustStore.trustPasswd=changeit
+org.onap.appc.adaptor.saltstack.clientType=TRUST_ALL
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestConnectionBuilder.java
similarity index 98%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestConnectionBuilder.java
index 71fcf34..fd6e781 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestConnectionBuilder.java
@@ -22,7 +22,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.impl;
+package org.onap.ccsdk.ali.adaptors.saltstack.impl;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestSaltstackAdaptorImpl.java
similarity index 83%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestSaltstackAdaptorImpl.java
index 22e8c20..1a05d50 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestSaltstackAdaptorImpl.java
@@ -22,12 +22,12 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.impl;
+package org.onap.ccsdk.ali.adaptors.saltstack.impl;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl;
+import org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdaptorImpl;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
@@ -38,9 +38,9 @@
 import static org.junit.Assert.fail;
 
 
-public class TestSaltstackAdapterImpl {
+public class TestSaltstackAdaptorImpl {
 
-    private SaltstackAdapterImpl adapter;
+    private SaltstackAdaptorImpl adaptor;
     private String TestId;
     private boolean testMode = true;
     private Map<String, String> params;
@@ -51,7 +51,7 @@
     public void setup() throws IllegalArgumentException {
         testMode = true;
         svcContext = new SvcLogicContext();
-        adapter = new SaltstackAdapterImpl(testMode);
+        adaptor = new SaltstackAdaptorImpl(testMode);
 
         params = new HashMap<>();
         params.put("AgentUrl", "https://192.168.1.1");
@@ -62,7 +62,7 @@
     @After
     public void tearDown() {
         testMode = false;
-        adapter = null;
+        adaptor = null;
         params = null;
         svcContext = null;
     }
@@ -76,9 +76,9 @@
         params.put("User", "test");
         params.put("Password", "test");
         params.put("Test", "fail");
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("101", status);
     }
 
@@ -90,9 +90,9 @@
         params.put("Port", "10");
         params.put("Password", "test");
         params.put("Test", "fail");
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("101", status);
     }
 
@@ -104,9 +104,9 @@
         params.put("User", "test");
         params.put("Password", "test");
         params.put("Test", "fail");
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("101", status);
     }
 
@@ -118,9 +118,9 @@
         params.put("User", "test");
         params.put("Password", "test");
         params.put("Test", "fail");
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("101", status);
     }
 
@@ -132,9 +132,9 @@
         params.put("Port", "10");
         params.put("User", "test");
         params.put("Test", "fail");
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("101", status);
     }
 
@@ -143,9 +143,9 @@
             IllegalStateException, IllegalArgumentException {
 
         params.put("Test", "fail");
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("101", status);
     }
 
@@ -161,9 +161,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("400", status);
         } catch (NullPointerException e) {
             fail(e.getMessage() + " Unknown exception encountered ");
@@ -183,9 +183,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("400", status);
         } catch (NullPointerException e) {
             fail(e.getMessage() + " Unknown exception encountered ");
@@ -205,9 +205,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("400", status);
         } catch (NullPointerException e) {
             fail(e.getMessage() + " Unknown exception encountered ");
@@ -228,9 +228,9 @@
         params.put("SlsExec", "false");
 
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("400", status);
         } catch (NullPointerException e) {
             fail(e.getMessage() + " Unknown exception encountered ");
@@ -249,9 +249,9 @@
         params.put("SlsExec", "test");
         params.put("Test", "fail");
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("400", status);
         } catch (NullPointerException e) {
             fail(e.getMessage() + " Unknown exception encountered ");
@@ -272,9 +272,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
 
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -293,9 +293,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "true");
 
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -314,8 +314,8 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "true");
 
-        adapter.reqExecCommand(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -333,9 +333,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
 
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "txt");
     }
@@ -354,9 +354,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
 
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "txt");
     }
@@ -375,9 +375,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
 
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
     }
 
@@ -393,7 +393,7 @@
         params.put("fileName", "src/test/resources/test-none.json");
         params.put("Id", "test1");
 
-        adapter.reqExecCommand(params, svcContext);
+        adaptor.reqExecCommand(params, svcContext);
     }
 
     @Test
@@ -409,9 +409,9 @@
         params.put("Cmd", "test");
         params.put("SlsExec", "false");
 
-        adapter.reqExecCommand(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecCommand(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
     }
 
@@ -429,9 +429,9 @@
         params.put("Id", "test1");
         params.put("Cmd", "test");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -449,8 +449,8 @@
         params.put("fileName", "src/test/resources/test-sls.json");
         params.put("Id", "test1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -467,8 +467,8 @@
         params.put("fileName", "src/test/resources/test-sls.json");
         params.put("Id", "test1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -485,8 +485,8 @@
         params.put("fileName", "src/test/resources/test-none.json");
         params.put("Id", "test1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -505,9 +505,9 @@
         params.put("Cmd", "test");
         params.put("NodeList", "minion1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -527,9 +527,9 @@
         params.put("Cmd", "test");
         params.put("NodeList", "minion1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -548,8 +548,8 @@
         params.put("Id", "test1");
         params.put("NodeList", "minion1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -567,8 +567,8 @@
         params.put("Id", "test1");
         params.put("NodeList", "minion1");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -587,9 +587,9 @@
         params.put("Cmd", "test");
         params.put("NodeList", "*");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -608,8 +608,8 @@
         params.put("Id", "test1");
         params.put("NodeList", "*");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -627,8 +627,8 @@
         params.put("Id", "test1");
         params.put("NodeList", "*");
 
-        adapter.reqExecSLSFile(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLSFile(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -647,9 +647,9 @@
         params.put("Id", "test1");
         params.put("Cmd", "test");
 
-        adapter.reqExecSLS(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -668,9 +668,9 @@
         params.put("Id", "test1");
         params.put("Cmd", "test");
 
-        adapter.reqExecSLS(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -688,8 +688,8 @@
         params.put("fileName", "src/test/resources/test-none.json");
         params.put("Id", "test1");
 
-        adapter.reqExecSLS(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -709,9 +709,9 @@
         params.put("Cmd", "test");
         params.put("NodeList", "minion1");
 
-        adapter.reqExecSLS(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -731,8 +731,8 @@
         params.put("Id", "test1");
         params.put("NodeList", "minion1");
 
-        adapter.reqExecSLS(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -751,9 +751,9 @@
         params.put("Cmd", "test");
         params.put("NodeList", "*");
 
-        adapter.reqExecSLS(params, svcContext);
-        String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals("200", status);
         assertEquals(TestId, "test1");
     }
@@ -773,8 +773,8 @@
         params.put("Id", "test1");
         params.put("NodeList", "*");
 
-        adapter.reqExecSLS(params, svcContext);
-        TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+        adaptor.reqExecSLS(params, svcContext);
+        TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
         assertEquals(TestId, "test1");
     }
 
@@ -791,11 +791,11 @@
         params.put("Cmd", "ls -l");
         params.put("SlsExec", "false");
         params.put("Timeout", "120");
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -817,11 +817,11 @@
         params.put("SlsExec", "false");
         params.put("Timeout", "120");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
             TestId = svcContext.getAttribute("test1.minion1");
@@ -845,11 +845,11 @@
         params.put("SlsExec", "true");
         params.put("Timeout", "120");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecCommand(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecCommand(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -871,11 +871,11 @@
         params.put("Timeout", "120");
         params.put("NodeList", "minion1");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLS(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLS(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -898,11 +898,11 @@
         params.put("NodeList", "minion1");
         params.put("EnvParameters", "{\"exclude\": bar*}");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLS(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLS(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -926,11 +926,11 @@
         params.put("EnvParameters", "{\"exclude\": \"bar,baz\"}");
         params.put("FileParameters", "{\"config.txt\":\"db_ip=10.1.1.1, sip_timer=10000\"}");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLS(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLS(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -954,11 +954,11 @@
         params.put("EnvParameters", "{\"exclude\": \"bar,baz\", \"pillar\":\"'{\\\"foo\\\": \\\"bar\\\"}'\"}");
         params.put("FileParameters", "{\"config.txt\":\"db_ip=10.1.1.1, sip_timer=10000\"}");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLS(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLS(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -982,11 +982,11 @@
         params.put("EnvParameters", "{\"exclude\": bar*}");
         params.put("FileParameters", "{\"config.txt\":\"db_ip=10.1.1.1, sip_timer=10000\" , \"config-tep.txt\":\"db_ip=10.1.1.1, sip_timer=10000\"}");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLS(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLS(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -1008,11 +1008,11 @@
         params.put("NodeList", "minion1");
         params.put("SlsFile", "src/test/resources/config.sls");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLSFile(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLSFile(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
@@ -1036,11 +1036,11 @@
         params.put("EnvParameters", "{\"exclude\": bar, \"pillar\":\"'{\\\"foo\\\": \\\"bar\\\"}'\"}");
         params.put("FileParameters", "{\"config.txt\":\"db_ip=10.1.1.1, sip_timer=10000\" , \"config-tep.txt\":\"db_ip=10.1.1.1, sip_timer=10000\"}");
 
-        adapter = new SaltstackAdapterImpl();
+        adaptor = new SaltstackAdaptorImpl();
         try {
-            adapter.reqExecSLSFile(params, svcContext);
-            String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
-            TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
+            adaptor.reqExecSLSFile(params, svcContext);
+            String status = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.result.code");
+            TestId = svcContext.getAttribute("org.onap.appc.adaptor.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
         } catch (Exception e) {
diff --git a/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestSaltstackAdaptorPropertiesProviderImpl.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestSaltstackAdaptorPropertiesProviderImpl.java
new file mode 100644
index 0000000..8d37a03
--- /dev/null
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/TestSaltstackAdaptorPropertiesProviderImpl.java
@@ -0,0 +1,310 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : CCSDK
+ * ================================================================================
+ * Copyright (C) 2018 Samsung Electronics. All rights reserved.
+ * ================================================================================
+ *
+ * =============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.ccsdk.ali.adaptors.saltstack.impl;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdaptorPropertiesProvider;
+import org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdaptorImpl;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class TestSaltstackAdaptorPropertiesProviderImpl {
+
+    private SaltstackAdaptorImpl adaptor;
+    private Properties params;
+
+
+    @Before
+    public void setup() throws IllegalArgumentException {
+        params = new Properties();
+    }
+
+    @After
+    public void tearDown() {
+        adaptor = null;
+        params = null;
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesBasicPortNull() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "BASIC");
+        params.put("User", "test");
+        params.put("Password", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test(expected = SvcLogicException.class)
+    public void reqExecCommand_setPropertiesBasicPortString() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "BASIC");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesBasicSuccess() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "BASIC");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "10");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(adaptor);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesSSH_CERTPortNull() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "SSH_CERT");
+        params.put("User", "test");
+        params.put("Password", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test(expected = SvcLogicException.class)
+    public void reqExecCommand_setPropertiesSSH_CERTPortString() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "SSH_CERT");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesSSH_CERTSuccess() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "SSH_CERT");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "10");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesBOTHPortNull() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "BOTH");
+        params.put("User", "test");
+        params.put("Password", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesBOTHSuccess() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "BOTH");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "10");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesNonePortNull() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "NONE");
+        params.put("User", "test");
+        params.put("Password", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesNonePortString() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "NONE");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesNoneSuccess() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.clientType", "NONE");
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "10");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+
+    @Test
+    public void reqExecCommand_setPropertiesElsePortNull() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("User", "test");
+        params.put("Password", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesElsePortString() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        assertNotNull(propProvider);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesElseSuccess() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        params.put("org.onap.appc.adaptor.saltstack.host", "test");
+        params.put("org.onap.appc.adaptor.saltstack.port", "10");
+        params.put("org.onap.appc.adaptor.saltstack.userName", "test");
+        params.put("org.onap.appc.adaptor.saltstack.userPasswd", "test");
+        params.put("org.onap.appc.adaptor.saltstack.sshKey", "test");
+        SaltstackAdaptorPropertiesProvider propProvider = new SaltstackAdaptorPropertiesProvider() {
+            @Override
+            public Properties getProperties() {
+                return params;
+            }
+        };
+        adaptor = new SaltstackAdaptorImpl(propProvider);
+        String adaptorName = adaptor.getAdaptorName();
+        assertEquals("Saltstack Adaptor", adaptorName);
+    }
+
+    @Test
+    public void reqExecCommand_setPropertiesDefault() throws SvcLogicException,
+            IllegalStateException, IllegalArgumentException {
+        adaptor = new SaltstackAdaptorImpl();
+        assertNotNull(adaptor);
+    }
+}
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/model/TestJsonParser.java
similarity index 97%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/model/TestJsonParser.java
index d4eafc1..31ccaee 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/java/org/onap/ccsdk/sli/adaptors/saltstack/model/TestJsonParser.java
@@ -19,7 +19,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.ccsdk.adapter.model;
+package org.onap.ccsdk.ali.adaptors.saltstack.model;
 
 import org.codehaus.jettison.json.JSONException;
 import org.junit.Test;
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/config.sls b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/config.sls
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/config.sls
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/config.sls
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/org/onap/ccsdk/default.properties
similarity index 97%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/org/onap/ccsdk/default.properties
index e5650e8..ba54b4a 100644
--- a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
+++ b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/org/onap/ccsdk/default.properties
@@ -22,7 +22,7 @@
 # ============LICENSE_END=========================================================
 ###
 #
-# Default properties for the APP-C Provider Adapter
+# Default properties for the APP-C Provider Adaptor
 #
 # -------------------------------------------------------------------------------------------------
 #
@@ -35,8 +35,8 @@
 # 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_provider_adapter
+# The name of the adaptor.
+org.onap.appc.provider.adaptor.name=org.onap.appc.appc_provider_adaptor
 #
 # Set up the logging environment
 #
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test-invalid.json
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test-invalid.json
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-sls.json b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test-sls.json
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-sls.json
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test-sls.json
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test.json
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test.json
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.sls b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test.sls
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.sls
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test.sls
diff --git a/adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.txt b/adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test.txt
similarity index 100%
rename from adaptors/saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.txt
rename to adaptors/saltstack-adaptor/saltstack-adaptor-provider/src/test/resources/test.txt
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exe-nonSLS.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exe-nonSLS.json
similarity index 88%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exe-nonSLS.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exe-nonSLS.json
index 562c24a..c83b89d 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exe-nonSLS.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exe-nonSLS.json
@@ -2,8 +2,8 @@
   {
     "id": "d86e7ee4.ee3f1",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-exe-nonSLS' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-exe-nonSLS' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 492,
@@ -37,7 +37,7 @@
     "id": "d40bf650.8338e8",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1007,
     "y": 373,
@@ -48,7 +48,7 @@
     "id": "38662e01.1d3c22",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='cd /srv/salt; ls -l'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='cd /srv/salt; ls -l'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 700,
@@ -65,7 +65,7 @@
     "id": "24fb9f79.a6c6c",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 486,
@@ -146,7 +146,7 @@
     "id": "1f81a3db.54cd1c",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 887,
     "y": 460,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exe-nonSLS.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exe-nonSLS.xml
similarity index 84%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exe-nonSLS.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exe-nonSLS.xml
index 6fbbe5b..9c032f8 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exe-nonSLS.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exe-nonSLS.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-exe-nonSLS' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-exe-nonSLS' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -17,30 +17,30 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='Other'>
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                     <outcome value='200'>
                         <return status='success'>
                             <parameter name='output.status.code'
-                                       value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                             <parameter name='output.status.message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                 </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-SLSFile.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-SLSFile.json
similarity index 90%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-SLSFile.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-SLSFile.json
index 7f42767..050e3e8 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-SLSFile.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-SLSFile.json
@@ -2,8 +2,8 @@
   {
     "id": "d0ad0305.352fc",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-exec-SLSFile' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-exec-SLSFile' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 552,
@@ -37,7 +37,7 @@
     "id": "31587001.4259e",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1262,
     "y": 365,
@@ -48,7 +48,7 @@
     "id": "65cc87e2.a95188",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 761,
@@ -65,7 +65,7 @@
     "id": "42fa1258.aa570c",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 544,
@@ -146,7 +146,7 @@
     "id": "2856792.c401a86",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 1042,
     "y": 656,
@@ -209,7 +209,7 @@
     "id": "770411a5.18825",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='Cmd' value='cd /srv/salt/; salt &apos;minion1&apos; state.apply vim --out=json --static'/>\n                        <parameter name='SlsExec' value='true'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='Cmd' value='cd /srv/salt/; salt &apos;minion1&apos; state.apply vim --out=json --static'/>\n                        <parameter name='SlsExec' value='true'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 773,
@@ -242,7 +242,7 @@
     "id": "c9345fbb.d6d19",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 578,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-SLSFile.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-SLSFile.xml
similarity index 87%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-SLSFile.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-SLSFile.xml
index fc63bbd..85a6a5b 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-SLSFile.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-SLSFile.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-exec-SLSFile' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-exec-SLSFile' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -18,20 +18,20 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='Other'>
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                     <outcome value='200'>
@@ -40,14 +40,14 @@
                                 <return status='failure'>
                                     <parameter name='error-code' value='200'/>
                                     <parameter name='error-message'
-                                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                     <parameter name='output.status.results'
-                                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                 </return>
                             </outcome>
                             <outcome value='true'>
                                 <execute
-                                        plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+                                        plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                                         method='reqExecCommand'>
                                     <parameter name='HostName'
                                                value='`$AgentUrl`'/>
@@ -66,25 +66,25 @@
                                             <parameter name='error-code'
                                                        value='200'/>
                                             <parameter name='error-message'
-                                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                             <parameter
                                                     name='output.status.results'
-                                                    value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                    value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                         </return>
                                     </outcome>
                                     <outcome value='Other'>
-                                        <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                                        <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                                             <outcome value='200'>
                                                 <return status='success'>
                                                     <parameter
                                                             name='output.status.code'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                                                     <parameter
                                                             name='output.status.message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                             <outcome value='Other'>
@@ -93,10 +93,10 @@
                                                                value='200'/>
                                                     <parameter
                                                             name='error-message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                         </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-multi-sls.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-multi-sls.json
similarity index 91%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-multi-sls.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-multi-sls.json
index d7cfef0..6b465c4 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-multi-sls.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-multi-sls.json
@@ -2,8 +2,8 @@
   {
     "id": "65f5c0d6.9c4ce",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-exec-multi-sls' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-exec-multi-sls' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 615,
@@ -37,7 +37,7 @@
     "id": "40ce8a6.5f7d174",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1325,
     "y": 455,
@@ -48,7 +48,7 @@
     "id": "c332cb01.51a3e8",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 824,
@@ -65,7 +65,7 @@
     "id": "16dfbd4f.b6da73",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 607,
@@ -146,7 +146,7 @@
     "id": "e45accfe.91615",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 1345,
     "y": 757,
@@ -209,7 +209,7 @@
     "id": "df0c0907.d17838",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='Cmd' value='salt &apos;minion1&apos; pkg.install vim --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='Cmd' value='salt &apos;minion1&apos; pkg.install vim --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 836,
@@ -242,7 +242,7 @@
     "id": "3ff32215.20cd0e",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 647,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-multi-sls.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-multi-sls.xml
similarity index 88%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-multi-sls.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-multi-sls.xml
index cc36b1c..062ffaa 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-multi-sls.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-multi-sls.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-exec-multi-sls' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-exec-multi-sls' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -18,20 +18,20 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='Other'>
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                     <outcome value='200'>
@@ -40,14 +40,14 @@
                                 <return status='failure'>
                                     <parameter name='error-code' value='200'/>
                                     <parameter name='error-message'
-                                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                     <parameter name='output.status.results'
-                                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                 </return>
                             </outcome>
                             <outcome value='true'>
                                 <execute
-                                        plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+                                        plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                                         method='reqExecCommand'>
                                     <parameter name='HostName'
                                                value='`$AgentUrl`'/>
@@ -66,27 +66,27 @@
                                             <parameter name='error-code'
                                                        value='200'/>
                                             <parameter name='error-message'
-                                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                             <parameter
                                                     name='output.status.results'
-                                                    value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                    value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                         </return>
                                     </outcome>
                                     <outcome value='Other'>
-                                        <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                                        <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                                             <outcome value='200'>
                                                 <switch test="`$test2.minion1.retcode`">
                                                     <outcome value='0'>
                                                         <return status='success'>
                                                             <parameter
                                                                     name='output.status.code'
-                                                                    value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                                                    value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                                                             <parameter
                                                                     name='output.status.message'
-                                                                    value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                                    value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                             <parameter
                                                                     name='output.status.results'
-                                                                    value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                                    value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                         </return>
                                                     </outcome>
                                                     <outcome value='Other'>
@@ -96,10 +96,10 @@
                                                                     value='200'/>
                                                             <parameter
                                                                     name='error-message'
-                                                                    value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                                    value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                             <parameter
                                                                     name='output.status.results'
-                                                                    value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                                    value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                         </return>
                                                     </outcome>
                                                 </switch>
@@ -110,10 +110,10 @@
                                                                value='200'/>
                                                     <parameter
                                                             name='error-message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                         </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-single-SLSComm.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-single-SLSComm.json
similarity index 88%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-single-SLSComm.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-single-SLSComm.json
index 4be0db3..f9b103c 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-single-SLSComm.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-single-SLSComm.json
@@ -2,8 +2,8 @@
   {
     "id": "bd0f1105.ff214",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-exec-single-SLSComm' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-exec-single-SLSComm' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 526,
@@ -37,7 +37,7 @@
     "id": "55a7736.2789e8c",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1064,
     "y": 453,
@@ -48,7 +48,7 @@
     "id": "f4e59dd0.ee45f",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 735,
@@ -65,7 +65,7 @@
     "id": "2ceb37d9.a8ba18",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 522,
@@ -146,7 +146,7 @@
     "id": "ce510062.8dcc7",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 893,
     "y": 399,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-single-SLSComm.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-single-SLSComm.xml
similarity index 84%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-single-SLSComm.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-single-SLSComm.xml
index bd9aea7..5a164d2 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adapter-1.0-exec-single-SLSComm.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecCommand/APPC_saltstack-adaptor-1.0-exec-single-SLSComm.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-exec-single-SLSComm' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-exec-single-SLSComm' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -18,30 +18,30 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='200'>
                         <return status='success'>
                             <parameter name='output.status.code'
-                                       value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                             <parameter name='output.status.message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                     <outcome value='Other'>
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                 </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0 IDEAL.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0 IDEAL.json
similarity index 87%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0 IDEAL.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0 IDEAL.json
index 7fe88f0..c312afc 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0 IDEAL.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0 IDEAL.json
@@ -2,8 +2,8 @@
   {
     "id": "80b83851.e527b8",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 676,
@@ -37,7 +37,7 @@
     "id": "1f4a794d.fb3be7",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 1055,
     "y": 369,
@@ -95,7 +95,7 @@
     "id": "83c8d47e.cb9c98",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsName' value='test-file.sls'/>\n                        <parameter name='NodeList' value='`$NodeList`'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n                        <parameter name='FileParameters' value='`$FileParameters`'/>\n                        <parameter name='EnvParameters' value='`$EnvParameters`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsName' value='test-file.sls'/>\n                        <parameter name='NodeList' value='`$NodeList`'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n                        <parameter name='FileParameters' value='`$FileParameters`'/>\n                        <parameter name='EnvParameters' value='`$EnvParameters`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 366,
@@ -144,7 +144,7 @@
     "id": "88b53985.e42758",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 709,
@@ -193,7 +193,7 @@
     "id": "efc02e73.0cf1d",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 719,
     "y": 351,
@@ -204,7 +204,7 @@
     "id": "81ddc2e0.dce24",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1039,
     "y": 439,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0 IDEAL.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0 IDEAL.xml
similarity index 85%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0 IDEAL.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0 IDEAL.xml
index 23ec785..b83cf18 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0 IDEAL.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0 IDEAL.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -19,30 +19,30 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='200'>
                         <return status='success'>
                             <parameter name='output.status.code'
-                                       value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                             <parameter name='output.status.message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                     <outcome value='Other'>
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                 </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0-exec-SLS-applyTo.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0-exec-SLS-applyTo.json
similarity index 88%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0-exec-SLS-applyTo.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0-exec-SLS-applyTo.json
index b276f38..1ef8af2 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0-exec-SLS-applyTo.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0-exec-SLS-applyTo.json
@@ -2,8 +2,8 @@
   {
     "id": "edb39979.b1ccd8",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-exec-SLS-NodeList' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-exec-SLS-NodeList' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 476,
@@ -37,7 +37,7 @@
     "id": "1591f92e.029ca7",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1191,
     "y": 315,
@@ -48,7 +48,7 @@
     "id": "95c9ba42.6e4aa8",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 684,
@@ -65,7 +65,7 @@
     "id": "38b44d70.9c85d2",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 472,
@@ -146,7 +146,7 @@
     "id": "e4f7eb59.0abb58",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 1079,
     "y": 564,
@@ -253,7 +253,7 @@
     "id": "e86d9995.b65c58",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsName' value='test-file.sls'/>\n                        <parameter name='NodeList' value='minion1'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsName' value='test-file.sls'/>\n                        <parameter name='NodeList' value='minion1'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 398,
@@ -302,7 +302,7 @@
     "id": "8bb4c177.499c8",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 733,
@@ -351,7 +351,7 @@
     "id": "6032e33e.5b044c",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 735,
     "y": 559,
@@ -362,7 +362,7 @@
     "id": "7026a88c.5bffd8",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1054,
     "y": 637,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0-exec-SLS-applyTo.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0-exec-SLS-applyTo.xml
similarity index 87%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0-exec-SLS-applyTo.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0-exec-SLS-applyTo.xml
index cc4538c..096a39b 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adapter-1.0-exec-SLS-applyTo.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLS/APPC_saltstack-adaptor-1.0-exec-SLS-applyTo.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-exec-SLS-NodeList' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-exec-SLS-NodeList' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -18,18 +18,18 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='200'>
                         <switch test="`$test1.minion1`">
                             <outcome value='true'>
                                 <execute
-                                        plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+                                        plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                                         method='reqExecCommand'>
                                     <parameter name='HostName'
                                                value='`$AgentUrl`'/>
@@ -48,25 +48,25 @@
                                             <parameter name='error-code'
                                                        value='200'/>
                                             <parameter name='error-message'
-                                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                             <parameter
                                                     name='output.status.results'
-                                                    value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                    value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                         </return>
                                     </outcome>
                                     <outcome value='Other'>
-                                        <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                                        <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                                             <outcome value='200'>
                                                 <return status='success'>
                                                     <parameter
                                                             name='output.status.code'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                                                     <parameter
                                                             name='output.status.message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                             <outcome value='Other'>
@@ -75,10 +75,10 @@
                                                                value='200'/>
                                                     <parameter
                                                             name='error-message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                         </switch>
@@ -89,9 +89,9 @@
                                 <return status='failure'>
                                     <parameter name='error-code' value='200'/>
                                     <parameter name='error-message'
-                                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                     <parameter name='output.status.results'
-                                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                 </return>
                             </outcome>
                         </switch>
@@ -100,9 +100,9 @@
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                 </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-SLSFILE.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-SLSFILE.json
similarity index 86%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-SLSFILE.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-SLSFILE.json
index b20e7e8..63b60c6 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-SLSFILE.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-SLSFILE.json
@@ -2,8 +2,8 @@
   {
     "id": "3228200a.5dc1a",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-SLSFILE' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-SLSFILE' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 679,
@@ -37,7 +37,7 @@
     "id": "49109fbc.a7a14",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 1058,
     "y": 374,
@@ -95,7 +95,7 @@
     "id": "50b2729f.712eac",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsFile' value='file/location/test-file.sls'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsFile' value='file/location/test-file.sls'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 369,
@@ -144,7 +144,7 @@
     "id": "59e320fa.12908",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 712,
@@ -193,7 +193,7 @@
     "id": "e59a1a81.112a08",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 722,
     "y": 356,
@@ -204,7 +204,7 @@
     "id": "6549631f.8e516c",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1042,
     "y": 444,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-SLSFILE.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-SLSFILE.xml
similarity index 83%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-SLSFILE.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-SLSFILE.xml
index 2c5e600..996cded 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-SLSFILE.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-SLSFILE.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-SLSFILE' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-SLSFILE' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -15,30 +15,30 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='200'>
                         <return status='success'>
                             <parameter name='output.status.code'
-                                       value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                             <parameter name='output.status.message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                     <outcome value='Other'>
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                 </switch>
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-exec-SLSFile-applyTo.json b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-exec-SLSFile-applyTo.json
similarity index 88%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-exec-SLSFile-applyTo.json
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-exec-SLSFile-applyTo.json
index 264950d..4abd80a 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-exec-SLSFile-applyTo.json
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-exec-SLSFile-applyTo.json
@@ -2,8 +2,8 @@
   {
     "id": "9a6bf94f.d969f8",
     "type": "method",
-    "name": "saltstack-adapter-1.0",
-    "xml": "<method rpc='saltstack-adapter-1.0-exec-SLSFile-SlsName' mode='sync'>\n",
+    "name": "saltstack-adaptor-1.0",
+    "xml": "<method rpc='saltstack-adaptor-1.0-exec-SLSFile-SlsName' mode='sync'>\n",
     "comments": "",
     "outputs": 1,
     "x": 498,
@@ -37,7 +37,7 @@
     "id": "6c593992.106038",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1202,
     "y": 280,
@@ -48,7 +48,7 @@
     "id": "138ad7ed.403248",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test1'/>\n                        <parameter name='Cmd' value='salt &apos;*&apos; test.ping --out=json --static'/>\n                        <parameter name='SlsExec' value='false'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 706,
@@ -65,7 +65,7 @@
     "id": "d5841e65.537ba",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 494,
@@ -146,7 +146,7 @@
     "id": "9ef7fcc3.69279",
     "type": "returnSuccess",
     "name": "return success",
-    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adapter.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adapter.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adapter.saltstack.results`'/>\n",
+    "xml": "<return status='success'>\n<parameter name='output.status.code' value='`$org.openecomp.appc.adaptor.saltstack.result.code`' />\n<parameter name='output.status.message' value='`$org.openecomp.appc.adaptor.saltstack.message`'/>\n<parameter name='output.status.results' value = '`$org.openecomp.appc.adaptor.saltstack.results`'/>\n",
     "comments": "",
     "x": 1101,
     "y": 559,
@@ -253,7 +253,7 @@
     "id": "eb57ba41.1d7328",
     "type": "execute",
     "name": "execute",
-    "xml": "<execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsFile' value='file/location/test.sls'/>\n                        <parameter name='NodeList' value='minion1'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
+    "xml": "<execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor' method='reqExecCommand' >\n                        <parameter name='HostName' value='`$AgentUrl`'/>\n                        <parameter name='Port' value='`$Port`'/>\n                        <parameter name='User' value='`$User`'/>\n                        <parameter name='Password' value='`$Password`'/>\n                        <parameter name='Id' value='test2'/>\n                        <parameter name='SlsFile' value='file/location/test.sls'/>\n                        <parameter name='NodeList' value='minion1'/>\n                        <parameter name='Timeout' value='`$Timeout`'/>\n",
     "comments": "",
     "outputs": 1,
     "x": 420,
@@ -302,7 +302,7 @@
     "id": "3875d695.fd37ca",
     "type": "switchNode",
     "name": "switch",
-    "xml": "<switch test=\"`$org.onap.appc.adapter.saltstack.result.code`\">\n",
+    "xml": "<switch test=\"`$org.onap.appc.adaptor.saltstack.result.code`\">\n",
     "comments": "",
     "outputs": 1,
     "x": 755,
@@ -351,7 +351,7 @@
     "id": "8c091fe.c6cbfe",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 757,
     "y": 554,
@@ -362,7 +362,7 @@
     "id": "2e4414a7.ba6d4c",
     "type": "returnFailure",
     "name": "return failure",
-    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adapter.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adapter.saltstack.results`' />\n",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='200' />\n<parameter name='error-message' value='`$org.openecomp.appc.adaptor.saltstack.message`' />\n<parameter name='output.status.results' value='`$org.openecomp.appc.adaptor.saltstack.results`' />\n",
     "comments": "",
     "x": 1076,
     "y": 632,
diff --git a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-exec-SLSFile-applyTo.xml b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-exec-SLSFile-applyTo.xml
similarity index 87%
rename from adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-exec-SLSFile-applyTo.xml
rename to adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-exec-SLSFile-applyTo.xml
index 16c573a..1f95593 100644
--- a/adaptors/saltstack-adapter/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adapter-1.0-exec-SLSFile-applyTo.xml
+++ b/adaptors/saltstack-adaptor/saltstack-directed-graphs-sample/reqExecSLSFile/APPC_saltstack-adaptor-1.0-exec-SLSFile-applyTo.xml
@@ -2,8 +2,8 @@
                xmlns='http://www.onap.org/sdnc/svclogic'
                xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd'
                module='APPC' version='2.0.1'>
-    <method rpc='saltstack-adapter-1.0-exec-SLSFile-NodeList' mode='sync'>
-        <execute plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+    <method rpc='saltstack-adaptor-1.0-exec-SLSFile-NodeList' mode='sync'>
+        <execute plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                  method='reqExecCommand'>
             <parameter name='HostName' value='`$AgentUrl`'/>
             <parameter name='Port' value='`$Port`'/>
@@ -18,18 +18,18 @@
                 <return status='failure'>
                     <parameter name='error-code' value='200'/>
                     <parameter name='error-message'
-                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                     <parameter name='output.status.results'
-                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                 </return>
             </outcome>
             <outcome value='Other'>
-                <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                     <outcome value='200'>
                         <switch test="`$test1.minion1`">
                             <outcome value='true'>
                                 <execute
-                                        plugin='org.openecomp.appc.adapter.saltstack.SaltstackAdapter'
+                                        plugin='org.openecomp.appc.adaptor.saltstack.SaltstackAdaptor'
                                         method='reqExecCommand'>
                                     <parameter name='HostName'
                                                value='`$AgentUrl`'/>
@@ -48,25 +48,25 @@
                                             <parameter name='error-code'
                                                        value='200'/>
                                             <parameter name='error-message'
-                                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                             <parameter
                                                     name='output.status.results'
-                                                    value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                    value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                         </return>
                                     </outcome>
                                     <outcome value='Other'>
-                                        <switch test="`$org.onap.appc.adapter.saltstack.result.code`">
+                                        <switch test="`$org.onap.appc.adaptor.saltstack.result.code`">
                                             <outcome value='200'>
                                                 <return status='success'>
                                                     <parameter
                                                             name='output.status.code'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.result.code`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.result.code`'/>
                                                     <parameter
                                                             name='output.status.message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                             <outcome value='Other'>
@@ -75,10 +75,10 @@
                                                                value='200'/>
                                                     <parameter
                                                             name='error-message'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                                     <parameter
                                                             name='output.status.results'
-                                                            value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                                            value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                                 </return>
                                             </outcome>
                                         </switch>
@@ -89,9 +89,9 @@
                                 <return status='failure'>
                                     <parameter name='error-code' value='200'/>
                                     <parameter name='error-message'
-                                               value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                                     <parameter name='output.status.results'
-                                               value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                               value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                                 </return>
                             </outcome>
                         </switch>
@@ -100,9 +100,9 @@
                         <return status='failure'>
                             <parameter name='error-code' value='200'/>
                             <parameter name='error-message'
-                                       value='`$org.openecomp.appc.adapter.saltstack.message`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.message`'/>
                             <parameter name='output.status.results'
-                                       value='`$org.openecomp.appc.adapter.saltstack.results`'/>
+                                       value='`$org.openecomp.appc.adaptor.saltstack.results`'/>
                         </return>
                     </outcome>
                 </switch>
