diff --git a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java
index 2df1cd4..6f6ddd8 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java
@@ -87,7 +87,7 @@
         assertEquals(CommonTestData.MY_BOOLEAN_PARAMETER_VALUE,
                 ((DummyReceptionHandlerParameterGroup) distributionParameters
                         .getReceptionHandlerConfigurationParameters()
-                        .get(CommonTestData.RECEPTION_CONFIGURATION_PARAMETERS)).getMyBooleanParameter());
+                        .get(CommonTestData.RECEPTION_CONFIGURATION_PARAMETERS)).isMyBooleanParameter());
         assertEquals(CommonTestData.FORWARDER_HOST,
                 ((DummyPolicyForwarderParameterGroup) distributionParameters.getPolicyForwarderConfigurationParameters()
                         .get(CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS)).getHostname());
diff --git a/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyReceptionHandlerParameterGroup.java b/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyReceptionHandlerParameterGroup.java
index d452e96..20f433d 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyReceptionHandlerParameterGroup.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyReceptionHandlerParameterGroup.java
@@ -81,7 +81,7 @@
         return myIntegerParameter;
     }
 
-    public boolean getMyBooleanParameter() {
+    public boolean isMyBooleanParameter() {
         return myBooleanParameter;
     }
 
diff --git a/packages/policy-distribution-tarball/pom.xml b/packages/policy-distribution-tarball/pom.xml
index 2165a48..0acf197 100644
--- a/packages/policy-distribution-tarball/pom.xml
+++ b/packages/policy-distribution-tarball/pom.xml
@@ -85,44 +85,4 @@
             </plugin>
         </plugins>
     </build>
-    <profiles>
-        <profile>
-            <id>only-eclipse</id>
-            <activation>
-                <property>
-                    <name>m2e.version</name>
-                </property>
-            </activation>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.eclipse.m2e</groupId>
-                            <artifactId>lifecycle-mapping</artifactId>
-                            <configuration>
-                                <lifecycleMappingMetadata>
-                                    <pluginExecutions>
-                                        <pluginExecution>
-                                            <pluginExecutionFilter>
-                                                <groupId>org.apache.maven.plugins</groupId>
-                                                <artifactId>maven-dependency-plugin</artifactId>
-                                                <versionRange>${maven-dependency-plugin.version}</versionRange>
-                                                <goals>
-                                                    <goal>unpack</goal>
-                                                    <goal>copy</goal>
-                                                </goals>
-                                            </pluginExecutionFilter>
-                                            <action>
-                                                <ignore />
-                                            </action>
-                                        </pluginExecution>
-                                    </pluginExecutions>
-                                </lifecycleMappingMetadata>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-    </profiles>
 </project>
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java
index e72e64a..0a78990 100644
--- a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java
+++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java
@@ -29,7 +29,6 @@
  * Holds the parameters for the{@link XacmlPdpPolicyForwarder}
  */
 public class XacmlPdpPolicyForwarderParameterGroup extends PolicyForwarderConfigurationParameterGroup {
-
     public static final String POLICY_FORWARDER_PLUGIN_CLASS = XacmlPdpPolicyForwarder.class.getCanonicalName();
 
     private boolean useHttps;
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcConfiguration.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcConfiguration.java
index 9952975..04c978b 100644
--- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcConfiguration.java
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcConfiguration.java
@@ -47,7 +47,7 @@
 
     @Override
     public List<String> getMsgBusAddress() {
-        return configParameters.getMsgBusAddress();
+        return configParameters.getMessageBusAddress();
     }
 
     @Override
@@ -87,7 +87,7 @@
 
     @Override
     public String getConsumerID() {
-        return configParameters.getConsumerID();
+        return configParameters.getConsumerId();
     }
 
     @Override
@@ -102,7 +102,7 @@
 
     @Override
     public boolean activateServerTLSAuth() {
-        return configParameters.activateServerTLSAuth();
+        return configParameters.isActiveServerTlsAuth();
     }
 
     @Override
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java
index 5c46049..ce925bb 100644
--- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java
@@ -45,17 +45,17 @@
     private List<String> artifactTypes;
     private String consumerGroup;
     private String environmentName;
-    private String keystorePath;
-    private String keystorePassword;
-    private boolean activeserverTlsAuth;
-    private boolean isFilterinEmptyResources;
-    private Boolean isUseHttpsWithDmaap;
+    private String keyStorePath;
+    private String keyStorePassword;
+    private boolean activeServerTlsAuth;
+    private boolean isFilterInEmptyResources;
+    private boolean isUseHttpsWithDmaap;
 
     /**
      * Inner static class is to used as a Builder.
      *
      */
-    public static class PssdConfigurationBuilder {
+    public static class SdcConfigurationBuilder {
         private String asdcAddress;
         private List<String> messageBusAddress;
         private String user;
@@ -72,77 +72,77 @@
         private boolean isFilterinEmptyResources;
         private Boolean isUseHttpsWithDmaap;
 
-        public PssdConfigurationBuilder setAsdcAddress(final String val) {
+        public SdcConfigurationBuilder setAsdcAddress(final String val) {
             asdcAddress = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setMessageBusAddress(final List<String> val) {
+        public SdcConfigurationBuilder setMessageBusAddress(final List<String> val) {
             messageBusAddress = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setUser(final String val) {
+        public SdcConfigurationBuilder setUser(final String val) {
             user = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setPassword(final String val) {
+        public SdcConfigurationBuilder setPassword(final String val) {
             password = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setPollingInterval(final int val) {
+        public SdcConfigurationBuilder setPollingInterval(final int val) {
             pollingInterval = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setPollingTimeout(final int val) {
+        public SdcConfigurationBuilder setPollingTimeout(final int val) {
             pollingTimeout = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setConsumerId(final String val) {
+        public SdcConfigurationBuilder setConsumerId(final String val) {
             consumerId = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setArtifactTypes(final List<String> val) {
+        public SdcConfigurationBuilder setArtifactTypes(final List<String> val) {
             artifactTypes = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setConsumerGroup(final String val) {
+        public SdcConfigurationBuilder setConsumerGroup(final String val) {
             consumerGroup = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setEnvironmentName(final String val) {
+        public SdcConfigurationBuilder setEnvironmentName(final String val) {
             environmentName = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setKeystorePath(final String val) {
+        public SdcConfigurationBuilder setKeystorePath(final String val) {
             keystorePath = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setKeystorePassword(final String val) {
+        public SdcConfigurationBuilder setKeystorePassword(final String val) {
             keystorePassword = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setActiveserverTlsAuth(final boolean val) {
+        public SdcConfigurationBuilder setActiveserverTlsAuth(final boolean val) {
             activeserverTlsAuth = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setIsFilterinEmptyResources(final boolean val) {
+        public SdcConfigurationBuilder setIsFilterinEmptyResources(final boolean val) {
             isFilterinEmptyResources = val;
             return this;
         }
 
-        public PssdConfigurationBuilder setIsUseHttpsWithDmaap(final Boolean val) {
+        public SdcConfigurationBuilder setIsUseHttpsWithDmaap(final Boolean val) {
             isUseHttpsWithDmaap = val;
             return this;
         }
@@ -161,7 +161,7 @@
      *
      * @param builder stores all the values used by PssdConfigurationParametersGroup
      */
-    private SdcReceptionHandlerConfigurationParameterGroup(final PssdConfigurationBuilder builder) {
+    private SdcReceptionHandlerConfigurationParameterGroup(final SdcConfigurationBuilder builder) {
         asdcAddress = builder.asdcAddress;
         messageBusAddress = builder.messageBusAddress;
         user = builder.user;
@@ -172,10 +172,10 @@
         artifactTypes = builder.artifactTypes;
         consumerGroup = builder.consumerGroup;
         environmentName = builder.environmentName;
-        keystorePath = builder.keystorePath;
-        keystorePassword = builder.keystorePassword;
-        activeserverTlsAuth = builder.activeserverTlsAuth;
-        isFilterinEmptyResources = builder.isFilterinEmptyResources;
+        keyStorePath = builder.keystorePath;
+        keyStorePassword = builder.keystorePassword;
+        activeServerTlsAuth = builder.activeserverTlsAuth;
+        isFilterInEmptyResources = builder.isFilterinEmptyResources;
         isUseHttpsWithDmaap = builder.isUseHttpsWithDmaap;
 
     }
@@ -184,7 +184,7 @@
         return asdcAddress;
     }
 
-    public List<String> getMsgBusAddress() {
+    public List<String> getMessageBusAddress() {
         return messageBusAddress;
     }
 
@@ -204,7 +204,7 @@
         return pollingTimeout;
     }
 
-    public String getConsumerID() {
+    public String getConsumerId() {
         return consumerId;
     }
 
@@ -221,22 +221,22 @@
     }
 
     public String getKeyStorePassword() {
-        return keystorePassword;
+        return keyStorePassword;
+    }
+
+    public boolean isActiveServerTlsAuth() {
+        return activeServerTlsAuth;
     }
 
     public String getKeyStorePath() {
-        return keystorePath;
-    }
-
-    public boolean activateServerTLSAuth() {
-        return activeserverTlsAuth;
+        return keyStorePath;
     }
 
     public boolean isFilterInEmptyResources() {
-        return isFilterinEmptyResources;
+        return isFilterInEmptyResources;
     }
 
-    public Boolean isUseHttpsWithDmaap() {
+    public boolean isUseHttpsWithDmaap() {
         return isUseHttpsWithDmaap;
     }
 
@@ -269,8 +269,8 @@
         validateStringElement(validationResult, user, "user");
         validateStringElement(validationResult, consumerId, "consumerId");
         validateStringElement(validationResult, consumerGroup, "consumerGroup");
-        validateStringElement(validationResult, keystorePath, "keystorePath");
-        validateStringElement(validationResult, keystorePassword, "keystorePassword");
+        validateStringElement(validationResult, keyStorePath, "keyStorePath");
+        validateStringElement(validationResult, keyStorePassword, "keyStorePassword");
         validateIntElement(validationResult, pollingInterval, "pollingInterval");
         validateIntElement(validationResult, pollingTimeout, "pollingTimeout");
         validateStringListElement(validationResult, messageBusAddress, "messageBusAddress");
diff --git a/plugins/reception-plugins/src/test/resources/handling-sdc.json b/plugins/reception-plugins/src/test/resources/handling-sdc.json
index b9e63fe..7e3758d 100644
--- a/plugins/reception-plugins/src/test/resources/handling-sdc.json
+++ b/plugins/reception-plugins/src/test/resources/handling-sdc.json
@@ -17,10 +17,10 @@
     ],
     "consumerGroup": "policy-group",
     "environmentName": "TEST",
-    "keystorePath": "null",
-    "keystorePassword": "null",
-    "activeserverTlsAuth": false,
-    "isFilterinEmptyResources": true,
+    "keyStorePath": "null",
+    "keyStorePassword": "null",
+    "activeServerTlsAuth": false,
+    "isFilterInEmptyResources": true,
     "isUseHttpsWithDmaap": false
 }
 
diff --git a/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json b/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json
index ababea4..112879f 100644
--- a/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json
+++ b/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json
@@ -17,10 +17,10 @@
     ],
     "consumerGroup": "policy-group",
     "environmentName": "environmentName",
-    "keystorePath": "null",
-    "keystorePassword": "null",
+    "keyStorePath": "null",
+    "keyStorePassword": "null",
     "activeserverTlsAuth": false,
-    "isFilterinEmptyResources": true,
+    "isFilterInEmptyResources": true,
     "isUseHttpsWithDmaap": false
 }
 
