import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
 import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
 
             new LinkedHashMap<>();
     private Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters =
             new LinkedHashMap<>();
+    private Map<String, PolicyDecoderConfigurationParameterGroup> policyDecoderConfigurationParameters =
+            new LinkedHashMap<>();
+
 
 
     /**
     public DistributionParameterGroup(final String name, final RestServerParameters restServerParameters,
             final Map<String, ReceptionHandlerParameters> receptionHandlerParameters,
             final Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters,
-            final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters) {
+            final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters,
+            final Map<String, PolicyDecoderConfigurationParameterGroup> policyDecoderConfigurationParameters) {
         this.name = name;
         this.restServerParameters = restServerParameters;
         this.receptionHandlerParameters = receptionHandlerParameters;
         this.receptionHandlerConfigurationParameters = receptionHandlerConfigurationParameters;
         this.policyForwarderConfigurationParameters = policyForwarderConfigurationParameters;
+        this.policyDecoderConfigurationParameters = policyDecoderConfigurationParameters;
     }
 
     /**
     /**
      * Sets the policy forwarder configuration parameter map.
      *
-     * @param eventInputParameters the policy forwarder configuration parameters
+     * @param policyForwarderConfigurationParameters the policy forwarder configuration parameters
      */
     public void setPolicyForwarderConfigurationParameters(
             final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters) {
         this.policyForwarderConfigurationParameters = policyForwarderConfigurationParameters;
     }
 
+    /**
+     * Returns the policy decoder configuration parameter map.
+     *
+     * @return the policyDecoderConfigurationParameters
+     */
+    public Map<String, PolicyDecoderConfigurationParameterGroup> getPolicyDecoderConfigurationParameters() {
+        return policyDecoderConfigurationParameters;
+    }
+
+    /**
+     * Set the policy decoder configuration parameter map.
+     *
+     * @param policyDecoderConfigurationParameters the policyDecoderConfigurationParameters to set
+     */
+    public void setPolicyDecoderConfigurationParameters(
+            final Map<String, PolicyDecoderConfigurationParameterGroup> policyDecoderConfigurationParameters) {
+        this.policyDecoderConfigurationParameters = policyDecoderConfigurationParameters;
+    }
+
     /**
      * Validate the parameter group.
      *
         }
         validateReceptionHandlers(validationResult);
         validateForwarderConfigurations(validationResult);
+        validateDecoderConfigurations(validationResult);
         return validationResult;
     }
 
-    /**
-     * Validate the reception handlers.
-     *
-     */
     private void validateReceptionHandlers(final GroupValidationResult validationResult) {
         if (receptionHandlerParameters == null || receptionHandlerParameters.size() == 0) {
             validationResult.setResult("receptionHandlerParameters", ValidationStatus.INVALID,
                     configurationParameters.getValue().validate());
         }
     }
+
+    private void validateDecoderConfigurations(final GroupValidationResult validationResult) {
+        for (final Entry<String, PolicyDecoderConfigurationParameterGroup> configurationParameters : policyDecoderConfigurationParameters
+                .entrySet()) {
+            validationResult.setResult("policyDecoderConfigurationParameters", configurationParameters.getKey(),
+                    configurationParameters.getValue().validate());
+        }
+    }
 }
 
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+
 import java.io.FileReader;
+
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParametersJsonAdapter;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParametersJsonAdapter;
 
 /**
- * This class handles reading, parsing and validating of policy distribution parameters from JSON
- * files.
+ * This class handles reading, parsing and validating of policy distribution parameters from JSON files.
  */
 public class DistributionParameterHandler {
     private static final Logger LOGGER = FlexLogger.getLogger(DistributionParameterHandler.class);
                             new PolicyForwarderConfigurationParametersJsonAdapter())
                     .registerTypeAdapter(ReceptionHandlerConfigurationParameterGroup.class,
                             new ReceptionHandlerConfigurationParametersJsonAdapter())
+                    .registerTypeAdapter(PolicyDecoderConfigurationParameterGroup.class,
+                            new PolicyDecoderConfigurationParametersJsonAdapter())
                     .create();
             distributionParameterGroup = gson.fromJson(new FileReader(arguments.getFullConfigurationFilePath()),
                     DistributionParameterGroup.class);
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.main.rest.DistributionRestServer;
 import org.onap.policy.distribution.reception.decoding.PluginInitializationException;
 import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
 
 /**
- * This class wraps a distributor so that it can be activated as a complete service together with
- * all its distribution and forwarding handlers.
+ * This class wraps a distributor so that it can be activated as a complete service together with all its distribution
+ * and forwarding handlers.
  */
 public class DistributionActivator {
     // The logger for this class
             ParameterService.register(params);
             ParameterService.register(params.getPluginHandlerParameters());
         }
-        for (final Entry<String, PolicyForwarderConfigurationParameterGroup> forwarderConfiguration : distributionParameterGroup
-                .getPolicyForwarderConfigurationParameters().entrySet()) {
+        //@formatter:off
+        for (final Entry<String, PolicyForwarderConfigurationParameterGroup> forwarderConfiguration
+                : distributionParameterGroup.getPolicyForwarderConfigurationParameters().entrySet()) {
             forwarderConfiguration.getValue().setName(forwarderConfiguration.getKey());
             ParameterService.register(forwarderConfiguration.getValue());
         }
-        for (final Entry<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfiguration : distributionParameterGroup
-                .getReceptionHandlerConfigurationParameters().entrySet()) {
+        for (final Entry<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfiguration
+                : distributionParameterGroup.getReceptionHandlerConfigurationParameters().entrySet()) {
             receptionHandlerConfiguration.getValue().setName(receptionHandlerConfiguration.getKey());
             ParameterService.register(receptionHandlerConfiguration.getValue());
         }
+        for (final Entry<String, PolicyDecoderConfigurationParameterGroup> decoderConfiguration
+                : distributionParameterGroup.getPolicyDecoderConfigurationParameters().entrySet()) {
+            decoderConfiguration.getValue().setName(decoderConfiguration.getKey());
+            ParameterService.register(decoderConfiguration.getValue());
+        }
+        //@formatter:on
     }
 
     /**
             ParameterService.deregister((params.getName()));
             ParameterService.deregister((params.getPluginHandlerParameters().getName()));
         }
-        for (final Entry<String, PolicyForwarderConfigurationParameterGroup> forwarderConfiguration : distributionParameterGroup
-                .getPolicyForwarderConfigurationParameters().entrySet()) {
+        //@formatter:off
+        for (final Entry<String, PolicyForwarderConfigurationParameterGroup> forwarderConfiguration
+                : distributionParameterGroup.getPolicyForwarderConfigurationParameters().entrySet()) {
             forwarderConfiguration.getValue().setName(forwarderConfiguration.getKey());
             ParameterService.deregister(forwarderConfiguration.getKey());
         }
-        for (final Entry<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfiguration : distributionParameterGroup
-                .getReceptionHandlerConfigurationParameters().entrySet()) {
+        for (final Entry<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfiguration
+                : distributionParameterGroup.getReceptionHandlerConfigurationParameters().entrySet()) {
             receptionHandlerConfiguration.getValue().setName(receptionHandlerConfiguration.getKey());
             ParameterService.deregister(receptionHandlerConfiguration.getKey());
         }
+        for (final Entry<String, PolicyDecoderConfigurationParameterGroup> decoderConfiguration
+                : distributionParameterGroup.getPolicyDecoderConfigurationParameters().entrySet()) {
+            decoderConfiguration.getValue().setName(decoderConfiguration.getKey());
+            ParameterService.deregister(decoderConfiguration.getKey());
+        }
+        //@formatter:on
     }
 
     /**
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup;
 import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
 import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup.DummyPolicyForwarderParameterGroupBuilder;
 import org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup;
 import org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup.DummyReceptionHandlerParameterGroupBuilder;
 import org.onap.policy.distribution.reception.parameters.PluginHandlerParameters;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.PolicyDecoderParameters;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
     public static final String DUMMY_ENGINE_FORWARDER_KEY = "DummyForwarder";
     public static final String DUMMY_DECODER_KEY = "DummyDecoder";
 
+    public static final String POLICY_TYPE = "DUMMY";
+    public static final String POLICY_NAME = "SamplePolicy";
+    public static final String DECODER_CONFIGURATION_PARAMETERS = "dummyDecoderConfiguration";
+
     /**
      * Returns an instance of ReceptionHandlerParameters for test cases.
      *
             messageBusAddress.add("localhost");
             final List<String> artifactTypes = new ArrayList<>();
             artifactTypes.add("TOSCA_CSAR");
-            DummyReceptionHandlerParameterGroup dummyReceptionHandlerParameterGroup =
+            final DummyReceptionHandlerParameterGroup dummyReceptionHandlerParameterGroup =
                     new DummyReceptionHandlerParameterGroupBuilder().setMyStringParameter(MY_STRING_PARAMETER_VALUE)
                             .setMyIntegerParameter(MY_INTEGER_PARAMETER_VALUE)
                             .setMyBooleanParameter(MY_BOOLEAN_PARAMETER_VALUE).build();
     public Map<String, PolicyDecoderParameters> getPolicyDecoders(final boolean isEmpty) {
         final Map<String, PolicyDecoderParameters> policyDecoders = new HashMap<String, PolicyDecoderParameters>();
         if (!isEmpty) {
-            final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters(DECODER_TYPE, DECODER_CLASS_NAME);
+            final PolicyDecoderParameters pDParameters =
+                    new PolicyDecoderParameters(DECODER_TYPE, DECODER_CLASS_NAME, DECODER_CONFIGURATION_PARAMETERS);
             policyDecoders.put(DUMMY_DECODER_KEY, pDParameters);
         }
         return policyDecoders;
         final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters =
                 new HashMap<String, PolicyForwarderConfigurationParameterGroup>();
         if (!isEmpty) {
-            DummyPolicyForwarderParameterGroup dummyPolicyForwarderParameterGroup =
+            final DummyPolicyForwarderParameterGroup dummyPolicyForwarderParameterGroup =
                     new DummyPolicyForwarderParameterGroupBuilder().setUseHttps(true).setHostname(FORWARDER_HOST)
                             .setPort(1234).setUserName("myUser").setPassword("myPassword").setIsManaged(true).build();
             policyForwarderConfigurationParameters.put(FORWARDER_CONFIGURATION_PARAMETERS,
         }
         return policyForwarderConfigurationParameters;
     }
+
+    /**
+     * Returns PolicyDecoderConfigurationParameterGroups for test cases.
+     *
+     * @param isEmpty boolean value to represent that object created should be empty or not
+     * @return the PolicyDecoderConfigurationParameterGroups
+     */
+    public Map<String, PolicyDecoderConfigurationParameterGroup> getPolicyDecoderConfigurationParameters(
+            final boolean isEmpty) {
+        final Map<String, PolicyDecoderConfigurationParameterGroup> policyDecoderConfigurationParameters =
+                new HashMap<String, PolicyDecoderConfigurationParameterGroup>();
+        if (!isEmpty) {
+            final DummyPolicyDecoderParameterGroup dummyPolicyForwarderParameterGroup =
+                    new DummyPolicyDecoderParameterGroup(POLICY_NAME, POLICY_TYPE);
+            policyDecoderConfigurationParameters.put(DECODER_CONFIGURATION_PARAMETERS,
+                    dummyPolicyForwarderParameterGroup);
+        }
+        return policyDecoderConfigurationParameters;
+    }
 }
 
 import static org.junit.Assert.fail;
 
 import java.util.Map;
+
 import org.junit.Test;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
 import org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
 
                 commonTestData.getReceptionHandlerConfigurationParameters(false);
         final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
                 commonTestData.getPolicyForwarderConfigurationParameters(false);
+        final Map<String, PolicyDecoderConfigurationParameterGroup> decoderConfigurations =
+                commonTestData.getPolicyDecoderConfigurationParameters(false);
 
-        final DistributionParameterGroup distributionParameters =
-                new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters,
-                        receptionHandlerParameters, receptionHandlerConfigurations, forwarderConfigurations);
+        final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
+                CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, receptionHandlerParameters,
+                receptionHandlerConfigurations, forwarderConfigurations, decoderConfigurations);
         final GroupValidationResult validationResult = distributionParameters.validate();
         assertTrue(validationResult.isValid());
         assertEquals(restServerParameters.getHost(), distributionParameters.getRestServerParameters().getHost());
                 commonTestData.getReceptionHandlerConfigurationParameters(false);
         final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
                 commonTestData.getPolicyForwarderConfigurationParameters(false);
+        final Map<String, PolicyDecoderConfigurationParameterGroup> decoderConfigurations =
+                commonTestData.getPolicyDecoderConfigurationParameters(false);
 
         final DistributionParameterGroup distributionParameters =
                 new DistributionParameterGroup(null, restServerParameters, receptionHandlerParameters,
-                        receptionHandlerConfigurations, forwarderConfigurations);
+                        receptionHandlerConfigurations, forwarderConfigurations, decoderConfigurations);
         final GroupValidationResult validationResult = distributionParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals(null, distributionParameters.getName());
                 commonTestData.getReceptionHandlerConfigurationParameters(false);
         final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
                 commonTestData.getPolicyForwarderConfigurationParameters(false);
+        final Map<String, PolicyDecoderConfigurationParameterGroup> decoderConfigurations =
+                commonTestData.getPolicyDecoderConfigurationParameters(false);
 
         final DistributionParameterGroup distributionParameters =
                 new DistributionParameterGroup("", restServerParameters, receptionHandlerParameters,
-                        receptionHandlerConfigurations, forwarderConfigurations);
+                        receptionHandlerConfigurations, forwarderConfigurations, decoderConfigurations);
         final GroupValidationResult validationResult = distributionParameters.validate();
         assertFalse(validationResult.isValid());
         assertEquals("", distributionParameters.getName());
                 commonTestData.getReceptionHandlerConfigurationParameters(false);
         final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
                 commonTestData.getPolicyForwarderConfigurationParameters(false);
+        final Map<String, PolicyDecoderConfigurationParameterGroup> decoderConfigurations =
+                commonTestData.getPolicyDecoderConfigurationParameters(false);
         try {
             final DistributionParameterGroup distributionParameters =
                     new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, null,
-                            receptionHandlerConfigurations, forwarderConfigurations);
+                            receptionHandlerConfigurations, forwarderConfigurations, decoderConfigurations);
             distributionParameters.validate();
             fail("test should throw an exception here");
         } catch (final Exception e) {
                 commonTestData.getReceptionHandlerConfigurationParameters(false);
         final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
                 commonTestData.getPolicyForwarderConfigurationParameters(false);
-        final DistributionParameterGroup distributionParameters =
-                new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters,
-                        receptionHandlerParameters, receptionHandlerConfigurations, forwarderConfigurations);
+        final Map<String, PolicyDecoderConfigurationParameterGroup> decoderConfigurations =
+                commonTestData.getPolicyDecoderConfigurationParameters(false);
+        final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
+                CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, receptionHandlerParameters,
+                receptionHandlerConfigurations, forwarderConfigurations, decoderConfigurations);
         distributionParameters.validate();
-        GroupValidationResult result = distributionParameters.validate();
+        final GroupValidationResult result = distributionParameters.validate();
         assertFalse(result.isValid());
         assertTrue(result.getResult().endsWith("must have at least one reception handler\n"));
     }
                 commonTestData.getReceptionHandlerConfigurationParameters(false);
         final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
                 commonTestData.getPolicyForwarderConfigurationParameters(false);
+        final Map<String, PolicyDecoderConfigurationParameterGroup> decoderConfigurations =
+                commonTestData.getPolicyDecoderConfigurationParameters(false);
 
-        final DistributionParameterGroup distributionParameters =
-                new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters,
-                        receptionHandlerParameters, receptionHandlerConfigurations, forwarderConfigurations);
+        final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
+                CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, receptionHandlerParameters,
+                receptionHandlerConfigurations, forwarderConfigurations, decoderConfigurations);
         final GroupValidationResult validationResult = distributionParameters.validate();
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult()
 
 import org.junit.Test;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup;
 import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
 
 /**
     @Test
     public void testParameterHandlerNoParameterFile() throws PolicyDistributionException {
         final String[] noArgumentString =
-        { "-c", "parameters/NoParameterFile.json" };
+            { "-c", "parameters/NoParameterFile.json" };
 
         final DistributionCommandLineArguments noArguments = new DistributionCommandLineArguments();
         noArguments.parse(noArgumentString);
     @Test
     public void testParameterHandlerEmptyParameters() throws PolicyDistributionException {
         final String[] emptyArgumentString =
-        { "-c", "parameters/EmptyParameters.json" };
+            { "-c", "parameters/EmptyParameters.json" };
 
         final DistributionCommandLineArguments emptyArguments = new DistributionCommandLineArguments();
         emptyArguments.parse(emptyArgumentString);
     @Test
     public void testParameterHandlerBadParameters() throws PolicyDistributionException {
         final String[] badArgumentString =
-        { "-c", "parameters/BadParameters.json" };
+            { "-c", "parameters/BadParameters.json" };
 
         final DistributionCommandLineArguments badArguments = new DistributionCommandLineArguments();
         badArguments.parse(badArgumentString);
     @Test
     public void testParameterHandlerInvalidParameters() throws PolicyDistributionException {
         final String[] invalidArgumentString =
-        { "-c", "parameters/InvalidParameters.json" };
+            { "-c", "parameters/InvalidParameters.json" };
 
         final DistributionCommandLineArguments invalidArguments = new DistributionCommandLineArguments();
         invalidArguments.parse(invalidArgumentString);
     @Test
     public void testParameterHandlerNoParameters() throws PolicyDistributionException {
         final String[] noArgumentString =
-        { "-c", "parameters/NoParameters.json" };
+            { "-c", "parameters/NoParameters.json" };
 
         final DistributionCommandLineArguments noArguments = new DistributionCommandLineArguments();
         noArguments.parse(noArgumentString);
     @Test
     public void testParameterHandlerMinumumParameters() throws PolicyDistributionException {
         final String[] minArgumentString =
-        { "-c", "parameters/MinimumParameters.json" };
+            { "-c", "parameters/MinimumParameters.json" };
 
         final DistributionCommandLineArguments minArguments = new DistributionCommandLineArguments();
         minArguments.parse(minArgumentString);
     @Test
     public void testDistributionParameterGroup() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters.json" };
+            { "-c", "parameters/DistributionConfigParameters.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
         assertEquals(CommonTestData.FORWARDER_HOST,
                 ((DummyPolicyForwarderParameterGroup) parGroup.getPolicyForwarderConfigurationParameters()
                         .get(CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS)).getHostname());
+        assertEquals(CommonTestData.POLICY_TYPE,
+                ((DummyPolicyDecoderParameterGroup) parGroup.getPolicyDecoderConfigurationParameters()
+                        .get(CommonTestData.DECODER_CONFIGURATION_PARAMETERS)).getPolicyType());
+        assertEquals(CommonTestData.POLICY_NAME,
+                ((DummyPolicyDecoderParameterGroup) parGroup.getPolicyDecoderConfigurationParameters()
+                        .get(CommonTestData.DECODER_CONFIGURATION_PARAMETERS)).getPolicyName());
     }
 
     @Test
     public void testDistributionParameterGroup_InvalidForwarderConfigurationClassName()
             throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json" };
+            { "-c", "parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     public void testDistributionParameterGroup_UnknownForwarderConfigurationClassName()
             throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json" };
+            { "-c", "parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_InvalidName() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_InvalidName.json" };
+            { "-c", "parameters/DistributionConfigParameters_InvalidName.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_NoReceptionHandler() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_NoReceptionHandler.json" };
+            { "-c", "parameters/DistributionConfigParameters_NoReceptionHandler.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_EmptyReceptionHandler() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_EmptyReceptionHandler.json" };
+            { "-c", "parameters/DistributionConfigParameters_EmptyReceptionHandler.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_NoPolicyDecoder() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_NoPolicyDecoder.json" };
+            { "-c", "parameters/DistributionConfigParameters_NoPolicyDecoder.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_NoPolicyForwarder() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_NoPolicyForwarder.json" };
+            { "-c", "parameters/DistributionConfigParameters_NoPolicyForwarder.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_EmptyPolicyDecoder() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_EmptyPolicyDecoder.json" };
+            { "-c", "parameters/DistributionConfigParameters_EmptyPolicyDecoder.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_EmptyPolicyForwarder() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_EmptyPolicyForwarder.json" };
+            { "-c", "parameters/DistributionConfigParameters_EmptyPolicyForwarder.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     public void testDistributionParameterGroup_InvalidReceptionHandlerParameters()
             throws PolicyDistributionException, IOException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json" };
+            { "-c", "parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     public void testDistributionParameterGroup_InvalidDecoderAndForwarderParameters()
             throws PolicyDistributionException, IOException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json" };
+            { "-c", "parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     public void testDistributionParameterGroup_InvalidRestServerParameters()
             throws PolicyDistributionException, IOException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_InvalidRestServerParameters.json" };
+            { "-c", "parameters/DistributionConfigParameters_InvalidRestServerParameters.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionVersion() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-v" };
+            { "-v" };
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         final String version = arguments.parse(distributionConfigParameters);
         assertTrue(version.startsWith("ONAP Policy Framework Distribution Service"));
     @Test
     public void testDistributionHelp() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-h" };
+            { "-h" };
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         final String help = arguments.parse(distributionConfigParameters);
         assertTrue(help.startsWith("usage:"));
     @Test
     public void testDistributionInvalidOption() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-d" };
+            { "-d" };
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         try {
             arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_InvalidReceptionHandlerClass() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_InvalidReceptionHandlerClass.json" };
+            { "-c", "parameters/DistributionConfigParameters_InvalidReceptionHandlerClass.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
     @Test
     public void testDistributionParameterGroup_EmptyReceptionHandlerClass() throws PolicyDistributionException {
         final String[] distributionConfigParameters =
-        { "-c", "parameters/DistributionConfigParameters_EmptyReceptionHandlerClass.json" };
+            { "-c", "parameters/DistributionConfigParameters_EmptyReceptionHandlerClass.json" };
 
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
         arguments.parse(distributionConfigParameters);
             assertTrue(e.getMessage().contains("invalid in JSON file"));
         }
     }
+
+    @Test
+    public void testDistributionParameterGroup_InvalidDecoderConfigurationClassName()
+            throws PolicyDistributionException {
+        final String[] distributionConfigParameters =
+            { "-c", "parameters/DistributionConfigParameters_InvalidDecoderConfigurationClassName.json" };
+
+        final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
+        arguments.parse(distributionConfigParameters);
+
+        try {
+            new DistributionParameterHandler().getParameters(arguments);
+            fail("test should throw an exception here");
+        } catch (final Exception e) {
+            assertTrue(e.getMessage().contains("parameter \"parameterClassName\" value \"\" invalid in JSON file"));
+        }
+    }
+
+    @Test
+    public void testDistributionParameterGroup_UnknownDecoderConfigurationClassName()
+            throws PolicyDistributionException {
+        final String[] distributionConfigParameters =
+            { "-c", "parameters/DistributionConfigParameters_UnknownDecoderConfigurationClassName.json" };
+
+        final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
+        arguments.parse(distributionConfigParameters);
+
+        try {
+            new DistributionParameterHandler().getParameters(arguments);
+            fail("test should throw an exception here");
+        } catch (final Exception e) {
+            assertTrue(e.getMessage().contains(
+                    "parameter \"parameterClassName\" value \"org.onap.policy.Unknown\", could not find class"));
+        }
+    }
 }
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.onap.policy.distribution.main.parameters.CommonTestData.DECODER_CLASS_NAME;
+import static org.onap.policy.distribution.main.parameters.CommonTestData.DECODER_CONFIGURATION_PARAMETERS;
+import static org.onap.policy.distribution.main.parameters.CommonTestData.DECODER_TYPE;
 
 import org.junit.Test;
 import org.onap.policy.common.parameters.GroupValidationResult;
     @Test
     public void testPolicyDecoderParameters() {
         final PolicyDecoderParameters pDParameters =
-                new PolicyDecoderParameters(CommonTestData.DECODER_TYPE, CommonTestData.DECODER_CLASS_NAME);
+                new PolicyDecoderParameters(DECODER_TYPE, DECODER_CLASS_NAME, DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
-        assertEquals(CommonTestData.DECODER_TYPE, pDParameters.getDecoderType());
-        assertEquals(CommonTestData.DECODER_CLASS_NAME, pDParameters.getDecoderClassName());
+        assertEquals(DECODER_TYPE, pDParameters.getDecoderType());
+        assertEquals(DECODER_CLASS_NAME, pDParameters.getDecoderClassName());
+        assertEquals(DECODER_CONFIGURATION_PARAMETERS, pDParameters.getDecoderConfigurationName());
         assertTrue(validationResult.isValid());
     }
 
     @Test
     public void testPolicyDecoderParameters_InvalidDecoderType() {
-        final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters("", CommonTestData.DECODER_CLASS_NAME);
+        final PolicyDecoderParameters pDParameters =
+                new PolicyDecoderParameters("", DECODER_CLASS_NAME, DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
         assertEquals("", pDParameters.getDecoderType());
-        assertEquals(CommonTestData.DECODER_CLASS_NAME, pDParameters.getDecoderClassName());
+        assertEquals(DECODER_CLASS_NAME, pDParameters.getDecoderClassName());
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult().contains(
                 "field \"decoderType\" type \"java.lang.String\" value \"\" INVALID, must be a non-blank string"));
 
     @Test
     public void testPolicyDecoderParameters_InvalidDecoderClassName() {
-        final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters(CommonTestData.DECODER_TYPE, "");
+        final PolicyDecoderParameters pDParameters =
+                new PolicyDecoderParameters(DECODER_TYPE, "", DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
-        assertEquals(CommonTestData.DECODER_TYPE, pDParameters.getDecoderType());
+        assertEquals(DECODER_TYPE, pDParameters.getDecoderType());
         assertEquals("", pDParameters.getDecoderClassName());
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult()
 
     @Test
     public void testPolicyDecoderParameters_InvalidDecoderTypeAndClassName() {
-        final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters("", "");
+        final PolicyDecoderParameters pDParameters =
+                new PolicyDecoderParameters("", "", DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
         assertEquals("", pDParameters.getDecoderType());
         assertEquals("", pDParameters.getDecoderClassName());
 
     @Test
     public void testPolicyDecoderParameters_NullDecoderType() {
-        final PolicyDecoderParameters pDParameters = 
-                new PolicyDecoderParameters(null, CommonTestData.DECODER_CLASS_NAME);
+        final PolicyDecoderParameters pDParameters =
+                new PolicyDecoderParameters(null, DECODER_CLASS_NAME, DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
         assertEquals(null, pDParameters.getDecoderType());
-        assertEquals(CommonTestData.DECODER_CLASS_NAME, pDParameters.getDecoderClassName());
+        assertEquals(DECODER_CLASS_NAME, pDParameters.getDecoderClassName());
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult().contains(
                 "field \"decoderType\" type \"java.lang.String\" value \"null\" INVALID, must be a non-blank string"));
 
     @Test
     public void testPolicyDecoderParameters_NullDecoderClassName() {
-        final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters(CommonTestData.DECODER_TYPE, null);
+        final PolicyDecoderParameters pDParameters =
+                new PolicyDecoderParameters(DECODER_TYPE, null, DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
-        assertEquals(CommonTestData.DECODER_TYPE, pDParameters.getDecoderType());
+        assertEquals(DECODER_TYPE, pDParameters.getDecoderType());
         assertEquals(null, pDParameters.getDecoderClassName());
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult()
 
     @Test
     public void testPolicyDecoderParameters_InvalidDecoderClass() {
-        final PolicyDecoderParameters pDParameters =
-                new PolicyDecoderParameters(CommonTestData.DECODER_TYPE, CommonTestData.DECODER_CLASS_NAME + "Invalid");
+        final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters(DECODER_TYPE,
+                DECODER_CLASS_NAME + "Invalid", DECODER_CONFIGURATION_PARAMETERS);
         final GroupValidationResult validationResult = pDParameters.validate();
-        assertEquals(CommonTestData.DECODER_TYPE, pDParameters.getDecoderType());
-        assertEquals(CommonTestData.DECODER_CLASS_NAME + "Invalid", pDParameters.getDecoderClassName());
+        assertEquals(DECODER_TYPE, pDParameters.getDecoderType());
+        assertEquals(DECODER_CLASS_NAME + "Invalid", pDParameters.getDecoderClassName());
         assertFalse(validationResult.isValid());
         assertTrue(validationResult.getResult().contains("policy decoder class not found in classpath"));
     }
 
     public Collection<Policy> decode(final PolicyInput input) throws PolicyDecodingException {
         return policesToReturn;
     }
+
+    @Override
+    public void configure(final String parameterGroupName) {}
 }
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.main.testclasses;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
+
+/**
+ * Dummy policy decoder parameter group.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class DummyPolicyDecoderParameterGroup extends PolicyDecoderConfigurationParameterGroup {
+
+    private String policyName;
+    private String policyType;
+
+    /**
+     * Constructor for instantiating the {@link DummyPolicyDecoderParameterGroup} class.
+     *
+     * @param policyName the policy name
+     * @param policyType the policy type
+     */
+    public DummyPolicyDecoderParameterGroup(final String policyName, final String policyType) {
+        super();
+        this.policyName = policyName;
+        this.policyType = policyType;
+    }
+
+
+    public String getPolicyName() {
+        return policyName;
+    }
+
+
+    public String getPolicyType() {
+        return policyType;
+    }
+
+    @Override
+    public GroupValidationResult validate() {
+        final GroupValidationResult validationResult = new GroupValidationResult(this);
+        return validationResult;
+    }
+
+}
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
\ No newline at end of file
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     },
                     "APEXDecoder":{
                         "decoderType":"",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.PolicyDecoderApexPdpa"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.PolicyDecoderApexPdpa",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     },
                     "DROOLSDecoder":{
                         "decoderType":"DROOLS",
-                        "decoderClassName":""
+                        "decoderClassName":"",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
--- /dev/null
+{
+    "name":"SDCDistributionGroup",
+    "restServerParameters":{
+        "host":"0.0.0.0",
+        "port":6969,
+        "userName":"healthcheck",
+        "password":"zb!XztG34"
+    },
+    "receptionHandlerParameters":{
+        "DummyReceptionHandler":{
+            "receptionHandlerType":"DummyReceptionHandler",
+            "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+            "receptionHandlerConfigurationName":"dummyReceptionHandlerConfiguration",
+            "pluginHandlerParameters":{
+                "policyDecoders":{
+                    "DummyDecoder":{
+                        "decoderType":"DummyDecoder",
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
+                    }
+                },
+                "policyForwarders":{
+                    "DummyForwarder":{
+                        "forwarderType":"DummyForwarder",
+                        "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+                        "forwarderConfigurationParameters": "dummyConfiguration"
+                    }
+                }
+            }
+        }
+    },
+    "receptionHandlerConfigurationParameters":{
+        "dummyReceptionHandlerConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+            "parameters":{
+                "myStringParameter": "stringValue",
+                "myIntegerParameter":20,
+                "myBooleanParameter": true
+            }
+        }
+    },
+    "policyForwarderConfigurationParameters":{
+        "dummyConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+            "parameters":{
+                "useHttps": false,
+                "hostname": "192.168.99.100",
+                "port": 8081,
+                "userName": "user",
+                "password": "pw123",
+                "isManaged": true
+            }
+        }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
+    }
+}
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 }
             }
                 "myBooleanParameter": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
--- /dev/null
+{
+    "name":"SDCDistributionGroup",
+    "restServerParameters":{
+        "host":"0.0.0.0",
+        "port":6969,
+        "userName":"healthcheck",
+        "password":"zb!XztG34"
+    },
+    "receptionHandlerParameters":{
+        "DummyReceptionHandler":{
+            "receptionHandlerType":"DummyReceptionHandler",
+            "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+            "receptionHandlerConfigurationName":"dummyReceptionHandlerConfiguration",
+            "pluginHandlerParameters":{
+                "policyDecoders":{
+                    "DummyDecoder":{
+                        "decoderType":"DummyDecoder",
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
+                    }
+                },
+                "policyForwarders":{
+                    "DummyForwarder":{
+                        "forwarderType":"DummyForwarder",
+                        "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+                        "forwarderConfigurationParameters": "dummyConfiguration"
+                    }
+                }
+            }
+        }
+    },
+    "receptionHandlerConfigurationParameters":{
+        "dummyReceptionHandlerConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandlerParameterGroup",
+            "parameters":{
+                "myStringParameter": "stringValue",
+                "myIntegerParameter":20,
+                "myBooleanParameter": true
+            }
+        }
+    },
+    "policyForwarderConfigurationParameters":{
+        "dummyConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+            "parameters":{
+                "useHttps": false,
+                "hostname": "192.168.99.100",
+                "port": 8081,
+                "userName": "user",
+                "password": "pw123",
+                "isManaged": true
+            }
+        }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.Unknown",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
+    }
+}
 
         "DummyReceptionHandler":{
             "receptionHandlerType":"DummyReceptionHandler",
             "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
-            "pssdConfiguration":{
-                "asdcAddress": "localhost",
-                "messageBusAddress": [
-                    "a.com",
-                    "b.com",
-                    "c.com"
-                 ],
-                "user": "tbdsdc-1480",
-                "password": "tbdsdc-1480",
-                "pollingInterval":20,
-                "pollingTimeout":30,
-                "consumerId": "policy-id",
-                "artifactTypes": [
-                    "TOSCA_CSAR",
-                    "HEAT"
-                ],
-                "consumerGroup": "policy-group",
-                "environmentName": "environmentName",
-                "keystorePath": "null",
-                "keystorePassword": "null",
-                "activeserverTlsAuth": false,
-                "isFilterinEmptyResources": true,
-                "isUseHttpsWithDmaap": false
-            },
+            "receptionHandlerConfigurationName":"dummyReceptionHandlerConfiguration",
             "pluginHandlerParameters":{
                 "policyDecoders":{
                     "DummyDecoder":{
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationParameters": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
                 "policyDecoders":{  
                     "DummyDecoder":{  
                         "decoderType":"DummyDecoder",
-                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+                        "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder",
+                        "decoderConfigurationName": "dummyDecoderConfiguration"
                     }
                 },
                 "policyForwarders":{  
                 "isManaged": true
             }
         }
+    },
+    "policyDecoderConfigurationParameters":{
+        "dummyDecoderConfiguration":{
+            "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup",
+            "parameters":{
+                "policyName": "SamplePolicy",
+                "policyType": "DUMMY"
+            }
+        }
     }
 }
 
 
 package org.onap.policy.distribution.model;
 
-import java.io.InputStream;
-
 /**
- * This class represents an apex-pdp policy which can be decoded by a relevant {@link PolicyDecoder}.
+ * This class represents a policy which can be decoded by a relevant {@link PolicyDecoder}.
  *
  * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
  */
-public class ApexPdpPolicy implements Policy {
+public class PolicyAsString implements Policy {
     private String policyName;
-    private InputStream policyInputStream;
+    private String policyType;
+    private String policy;
 
     /**
-     * Constructor for creating instance of {@link ApexPdpPolicy}.
+     * Constructor for creating instance of {@link PolicyAsString}.
      *
      * @param policyName the policy file name
-     * @param policyInputStream the input stream
+     * @param policyType the policy type
+     * @param policy the policy
      */
-    public ApexPdpPolicy(final String policyName, final InputStream policyInputStream) {
+    public PolicyAsString(final String policyName, final String policyType, final String policy) {
         this.policyName = policyName;
-        this.policyInputStream = policyInputStream;
+        this.policyType = policyType;
+        this.policy = policy;
     }
 
     /**
-     * Returns the policyInputStream of this ApexPdpPolicy instance.
+     * Returns the policy of this {@link PolicyAsString} instance.
      *
-     * @return the policyInputStream
+     * @return the policy
      */
-    public InputStream getPolicyInputStream() {
-        return policyInputStream;
+    public String getPolicy() {
+        return policy;
     }
 
     /**
      */
     @Override
     public String getPolicyType() {
-        return "Method not supported";
+        return policyType;
     }
 }
 
 
 package org.onap.policy.distribution.forwarding.apex.pdp;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Collection;
 
+import org.apache.commons.io.IOUtils;
 import org.onap.policy.apex.core.deployment.EngineServiceFacade;
 import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.distribution.forwarding.PolicyForwarder;
 import org.onap.policy.distribution.forwarding.PolicyForwardingException;
 import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarder;
-import org.onap.policy.distribution.model.ApexPdpPolicy;
 import org.onap.policy.distribution.model.Policy;
+import org.onap.policy.distribution.model.PolicyAsString;
 
 /**
  * This class provides an implementation of {@link PolicyForwarder} interface for forwarding the given policies to
 public class ApexPdpPolicyForwarder implements PolicyForwarder {
 
     private static final Logger LOGGER = FlexLogger.getLogger(XacmlPdpPolicyForwarder.class);
+    private static final String POLICY_TYPE = "APEX";
 
     private ApexPdpPolicyForwarderParameterGroup apexForwarderParameters;
     private EngineServiceFacade engineServiceFacade;
 
         } else {
             final Policy policy = (Policy) policies.toArray()[0];
-            if (policy.getClass().isAssignableFrom(ApexPdpPolicy.class)) {
-                forwardPolicy((ApexPdpPolicy) policy);
+            if (policy.getClass().isAssignableFrom(PolicyAsString.class)
+                    && policy.getPolicyType().equalsIgnoreCase(POLICY_TYPE)) {
+                forwardPolicy((PolicyAsString) policy);
             } else {
                 final String message = "Ignoring the policy as it is not an apex-pdp policy";
                 LOGGER.debug(message);
      * @param apexPolicy the apex policy
      * @throws PolicyForwardingException if any exception occurs while forwarding policy
      */
-    private void forwardPolicy(final ApexPdpPolicy apexPolicy) throws PolicyForwardingException {
+    private void forwardPolicy(final PolicyAsString apexPolicy) throws PolicyForwardingException {
         try {
             engineServiceFacade.init();
-            engineServiceFacade.deployModel(apexPolicy.getPolicyName(), apexPolicy.getPolicyInputStream(),
+            final InputStream policyInputStream = IOUtils.toInputStream(apexPolicy.getPolicy(), "UTF-8");
+            engineServiceFacade.deployModel(apexPolicy.getPolicyName(), policyInputStream,
                     apexForwarderParameters.isIgnoreConflicts(), apexForwarderParameters.isForceUpdate());
 
             LOGGER.debug("Sucessfully forwarded the policy to apex-pdp egine at "
                     + apexForwarderParameters.getHostname() + ":" + apexForwarderParameters.getPort());
 
-        } catch (final ApexException exp) {
+        } catch (final ApexException | IOException exp) {
             final String message = "Error sending policy to apex-pdp engine at" + apexForwarderParameters.getHostname()
                     + ":" + apexForwarderParameters.getPort();
             LOGGER.error(message, exp);
 
 import org.junit.Test;
 import org.onap.policy.common.parameters.ValidationStatus;
 
+/**
+ * Class to perform unit test of {@link ApexPdpPolicyForwarderParameterGroup}.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
 public class ApexPdpPolicyForwarderParameterGroupTest {
 
     @Test
 
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.forwarding.PolicyForwardingException;
-import org.onap.policy.distribution.model.ApexPdpPolicy;
 import org.onap.policy.distribution.model.Policy;
+import org.onap.policy.distribution.model.PolicyAsString;
 
+/**
+ * Class to perform unit test of {@link ApexPdpPolicyForwarder}.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
 @RunWith(MockitoJUnitRunner.class)
 public class ApexPdpPolicyForwarderTest {
 
     public void testForwardPolicy() throws ApexException, FileNotFoundException, IOException, PolicyForwardingException,
             NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
 
-        final FileInputStream fis = new FileInputStream(File.createTempFile("policy1", null));
         final Collection<Policy> policies = new ArrayList<>();
         final ApexPdpPolicyForwarder forwarder = new ApexPdpPolicyForwarder();
         forwarder.configure(GROUP_NAME);
         forwarderField.setAccessible(true);
         forwarderField.set(forwarder, engineServiceFacade);
 
-        final ApexPdpPolicy policy = new ApexPdpPolicy("policy", fis);
+        final PolicyAsString policy = new PolicyAsString("policy", "APEX", "Sample Policy of apex");
         policies.add(policy);
 
         try {
             forwarder.forward(policies);
             verify(engineServiceFacade, times(1)).init();
-            verify(engineServiceFacade, times(1)).deployModel("policy", fis, IGNORE_CONFLICTS, FORCE_UPDATE);
+            verify(engineServiceFacade, times(1)).deployModel(eq("policy"), anyObject(), eq(IGNORE_CONFLICTS),
+                    eq(FORCE_UPDATE));
         } catch (final Exception exp) {
             fail("Test must not throw an exception");
         }
             throws ApexException, FileNotFoundException, IOException, PolicyForwardingException, NoSuchFieldException,
             SecurityException, IllegalArgumentException, IllegalAccessException {
 
-        final FileInputStream fis = new FileInputStream(File.createTempFile("policy1", null));
         final Collection<Policy> policies = new ArrayList<>();
         final ApexPdpPolicyForwarder forwarder = new ApexPdpPolicyForwarder();
         forwarder.configure(GROUP_NAME);
 
-        Mockito.doThrow(new ApexException("Failed")).when(engineServiceFacade).deployModel("policy1", fis,
-                IGNORE_CONFLICTS, FORCE_UPDATE);
+        Mockito.doThrow(new ApexException("Failed")).when(engineServiceFacade).deployModel(eq("policy1"), anyObject(),
+                eq(IGNORE_CONFLICTS), eq(FORCE_UPDATE));
 
         final Field decodersField = forwarder.getClass().getDeclaredField("engineServiceFacade");
         decodersField.setAccessible(true);
         decodersField.set(forwarder, engineServiceFacade);
 
-        final ApexPdpPolicy policy1 = new ApexPdpPolicy("policy1", fis);
+        final PolicyAsString policy1 = new PolicyAsString("policy1", "APEX", "Sample Policy of apex");
         policies.add(policy1);
 
         try {
         forwarderField.setAccessible(true);
         forwarderField.set(forwarder, engineServiceFacade);
 
-        final ApexPdpPolicy policy1 =
-                new ApexPdpPolicy("policy1", new FileInputStream(File.createTempFile("policy1", null)));
+        final PolicyAsString policy1 = new PolicyAsString("policy1", "APEX", "Sample Policy of apex");
         policies.add(policy1);
 
-        final ApexPdpPolicy policy2 =
-                new ApexPdpPolicy("policy2", new FileInputStream(File.createTempFile("policy2", null)));
+        final PolicyAsString policy2 = new PolicyAsString("policy2", "APEX", "Sample Policy of apex");
         policies.add(policy2);
 
         try {
 
     public Collection<Policy> decode(final PolicyInput input) throws PolicyDecodingException {
         return policesToReturn;
     }
+
+    @Override
+    public void configure(final String parameterGroupName) {}
 }
 
  * 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.
- * 
+ *
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.List;
-
 import java.util.Collection;
-import java.util.Collections;
-
+import java.util.List;
 
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
-
-import org.onap.policy.distribution.model.PolicyInput;
 import org.onap.policy.distribution.model.Csar;
+import org.onap.policy.distribution.model.PolicyInput;
 import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
-
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
-import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl;
 import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
-
 import org.onap.sdc.toscaparser.api.NodeTemplate;
-import org.onap.sdc.toscaparser.api.elements.Metadata;
 
 /**
  * Decodes PDP-X policies from a TOSCA file.
     private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderCsarPdpx.class);
 
     @Override
-    public Collection<PdpxPolicy> decode(Csar csar) throws PolicyDecodingException {
-        // logic for generating the policies from the CSAR. 
-        List<PdpxPolicy> lPdpxPolicy = new ArrayList<>();
-        ISdcCsarHelper sdcCsarHelper = parseCsar(csar);
-        List<NodeTemplate> lnodeVf = sdcCsarHelper.getServiceVfList();
+    public Collection<PdpxPolicy> decode(final Csar csar) throws PolicyDecodingException {
+        // logic for generating the policies from the CSAR.
+        final List<PdpxPolicy> lPdpxPolicy = new ArrayList<>();
+        final ISdcCsarHelper sdcCsarHelper = parseCsar(csar);
+        final List<NodeTemplate> lnodeVf = sdcCsarHelper.getServiceVfList();
         LOGGER.debug("the size of Vf = " + lnodeVf.size());
-        ExtractFromNode extractFromNode = new ExtractFromNode();
+        final ExtractFromNode extractFromNode = new ExtractFromNode();
         extractFromNode.setSdcCsarHelper(sdcCsarHelper);
-        for ( NodeTemplate node : lnodeVf) {
-            PdpxPolicy ret = extractFromNode.extractInfo(node);
+        for (final NodeTemplate node : lnodeVf) {
+            final PdpxPolicy ret = extractFromNode.extractInfo(node);
             if (ret != null) {
                 lPdpxPolicy.add(ret);
             }
     }
 
     @Override
-    public boolean canHandle(PolicyInput policyInput) {
+    public boolean canHandle(final PolicyInput policyInput) {
         return policyInput.getClass().isAssignableFrom(Csar.class);
     }
 
-    /** 
+    /**
      * Parse the input Csar by SDC tosca tool.
      *
      * @param csar represents the service TOSCA Csar
      * @return the object to represents the content of input csar
      * @throws PolicyDecodingException if parse fails
      */
-    public ISdcCsarHelper parseCsar(Csar csar)  throws PolicyDecodingException {
-        ISdcCsarHelper sdcCsarHelper ;
+    public ISdcCsarHelper parseCsar(final Csar csar) throws PolicyDecodingException {
+        ISdcCsarHelper sdcCsarHelper;
         try {
 
-            SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();//Autoclosable
+            final SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();// Autoclosable
 
             LOGGER.debug("tosca File Path = " + csar.getCsarPath());
 
-            File spoolFile = new File(csar.getCsarPath());
+            final File spoolFile = new File(csar.getCsarPath());
 
             sdcCsarHelper = factory.getSdcCsarHelper(spoolFile.getAbsolutePath());
 
-        } catch (Exception e) {
-            LOGGER.error("Exception got in parseTosca",e);
-            throw new PolicyDecodingException ("Exception caught when passing the csar file to the parser ", e);
+        } catch (final Exception e) {
+            LOGGER.error("Exception got in parseTosca", e);
+            throw new PolicyDecodingException("Exception caught when passing the csar file to the parser ", e);
         }
         return sdcCsarHelper;
     }
 
+    @Override
+    public void configure(final String parameterGroupName) {}
+
 }
 
  * 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.
- * 
+ *
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
 
 import java.util.Collection;
 import java.util.Collections;
+
 import org.onap.policy.distribution.model.PolicyInput;
 import org.onap.policy.distribution.model.Tosca;
 import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
 public class PolicyDecoderToscaPdpx implements PolicyDecoder<Tosca, PdpxPolicy> {
 
     @Override
-    public Collection<PdpxPolicy> decode(Tosca tosca) {
+    public Collection<PdpxPolicy> decode(final Tosca tosca) {
         // Add logic for generating the policies from the TOSCA
         return Collections.emptySet();
     }
 
     @Override
-    public boolean canHandle(PolicyInput policyInput) {
+    public boolean canHandle(final PolicyInput policyInput) {
         return policyInput.getClass().isAssignableFrom(Tosca.class);
     }
 
+    @Override
+    public void configure(final String parameterGroupName) {}
+
 }
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.decoding.policy.file;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.apache.commons.io.IOUtils;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.distribution.model.Csar;
+import org.onap.policy.distribution.model.PolicyAsString;
+import org.onap.policy.distribution.model.PolicyInput;
+import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
+import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
+
+/**
+ * This class extracts policy files from a CSAR file.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class PolicyDecoderFileInCsarToPolicy implements PolicyDecoder<Csar, PolicyAsString> {
+
+    private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderFileInCsarToPolicy.class);
+    PolicyDecoderFileInCsarToPolicyParameterGroup decoderParameters;
+
+    /**
+     * {@inheritDoc}.
+     */
+    @Override
+    public void configure(final String parameterGroupName) {
+        decoderParameters = ParameterService.get(parameterGroupName);
+    }
+
+    /**
+     * {@inheritDoc}.
+     */
+    @Override
+    public boolean canHandle(final PolicyInput policyInput) {
+        return policyInput.getClass().isAssignableFrom(Csar.class);
+    }
+
+    /**
+     * {@inheritDoc}.
+     */
+    @Override
+    public Collection<PolicyAsString> decode(final Csar csar) throws PolicyDecodingException {
+        final Collection<PolicyAsString> policyList = new ArrayList<>();
+
+        try (ZipFile zipFile = new ZipFile(csar.getCsarPath())) {
+            final Enumeration<? extends ZipEntry> entries = zipFile.entries();
+            while (entries.hasMoreElements()) {
+                final ZipEntry entry = entries.nextElement();
+                if (entry.getName().contains(decoderParameters.getPolicyFileName())) {
+                    final StringWriter writer = new StringWriter();
+                    IOUtils.copy(zipFile.getInputStream(entry), writer, "UTF-8");
+                    final PolicyAsString poilcy = new PolicyAsString(decoderParameters.getPolicyFileName(),
+                            decoderParameters.getPolicyType(), writer.toString());
+                    policyList.add(poilcy);
+                }
+            }
+        } catch (final IOException exp) {
+            final String message = "Failed decoding the policy";
+            LOGGER.error(message, exp);
+            throw new PolicyDecodingException(message, exp);
+        }
+
+        return policyList;
+    }
+}
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.decoding.policy.file;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
+
+/**
+ * Holds the parameters for the{@link PolicyDecoderFileInCsarToPolicy}.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class PolicyDecoderFileInCsarToPolicyParameterGroup extends PolicyDecoderConfigurationParameterGroup {
+
+    private String policyFileName;
+    private String policyType;
+
+    /**
+     * Constructor for instantiating {@link PolicyDecoderFileInCsarToPolicyParameterGroup} class.
+     *
+     * @param policyFileName the policy file name
+     * @param policyType the policy type
+     */
+    public PolicyDecoderFileInCsarToPolicyParameterGroup(final String policyFileName, final String policyType) {
+        this.policyFileName = policyFileName;
+        this.policyType = policyType;
+    }
+
+    public String getPolicyFileName() {
+        return policyFileName;
+    }
+
+    public String getPolicyType() {
+        return policyType;
+    }
+
+    @Override
+    public GroupValidationResult validate() {
+        final GroupValidationResult validationResult = new GroupValidationResult(this);
+        if (!ParameterValidationUtils.validateStringParameter(policyFileName)) {
+            validationResult.setResult("policyFileName", ValidationStatus.INVALID,
+                    "must be a non-blank string containing the policy file name");
+        }
+        if (!ParameterValidationUtils.validateStringParameter(policyType)) {
+            validationResult.setResult("policyType", ValidationStatus.INVALID,
+                    "must be a non-blank string containing the policy type");
+        }
+        return validationResult;
+    }
+}
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.decoding.policy.file;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.distribution.reception.decoding.policy.file.PolicyDecoderFileInCsarToPolicyParameterGroup;
+
+/**
+ * Class to perform unit test of {@link PolicyDecoderFileInCsarToPolicyParameterGroup}.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class PolicyDecoderFileInCsarToPolicyParameterGroupTest {
+
+    @Test
+    public void testConstructorAndGetters() {
+        final PolicyDecoderFileInCsarToPolicyParameterGroup configurationParameters =
+                new PolicyDecoderFileInCsarToPolicyParameterGroup("SamplePolicy", "APEX");
+        configurationParameters.setName("myConfiguration");
+
+        assertEquals("myConfiguration", configurationParameters.getName());
+        assertEquals("SamplePolicy", configurationParameters.getPolicyFileName());
+        assertEquals("APEX", configurationParameters.getPolicyType());
+        assertEquals(ValidationStatus.CLEAN, configurationParameters.validate().getStatus());
+    }
+
+    @Test
+    public void testInvalidPolicyFileName() {
+        final PolicyDecoderFileInCsarToPolicyParameterGroup configurationParameters =
+                new PolicyDecoderFileInCsarToPolicyParameterGroup("", "APEX");
+        configurationParameters.setName("myConfiguration");
+
+        assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus());
+    }
+
+    @Test
+    public void testInvalidPolicyType() {
+        final PolicyDecoderFileInCsarToPolicyParameterGroup configurationParameters =
+                new PolicyDecoderFileInCsarToPolicyParameterGroup("SamplePolicy", "");
+        configurationParameters.setName("myConfiguration");
+
+        assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus());
+    }
+}
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.decoding.policy.file;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.distribution.model.Csar;
+import org.onap.policy.distribution.model.PolicyAsString;
+
+/**
+ * Class to perform unit test of {@link PolicyDecoderFileInCsarToPolicy}.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+@RunWith(MockitoJUnitRunner.class)
+public class PolicyDecoderFileInCsarToPolicyTest {
+
+    private static final String POLICY_FILE_NAME = "SamplePolicyModelJAVASCRIPT";
+    private static final String POLICY_TYPE = "APEX";
+    private static final String GROUP_NAME = "apexPdpDecoderConfiguration";
+
+    /**
+     * Set up.
+     */
+    @BeforeClass
+    public static void setUp() {
+        final PolicyDecoderFileInCsarToPolicyParameterGroup configurationParameters =
+                new PolicyDecoderFileInCsarToPolicyParameterGroup(POLICY_FILE_NAME, POLICY_TYPE);
+        configurationParameters.setName(GROUP_NAME);
+        ParameterService.register(configurationParameters);
+    }
+
+    /**
+     * Tear down.
+     */
+    @AfterClass
+    public static void tearDown() {
+        ParameterService.deregister(GROUP_NAME);
+    }
+
+    @Test
+    public void testDecodePolicy() {
+
+        final PolicyDecoderFileInCsarToPolicy decoder = new PolicyDecoderFileInCsarToPolicy();
+        decoder.configure(GROUP_NAME);
+
+        final File file = new File("src/test/resources/sampleTestService.csar");
+        final Csar csar = new Csar(file.getAbsolutePath());
+
+        try {
+            decoder.canHandle(csar);
+            final Collection<PolicyAsString> policyHolders = decoder.decode(csar);
+            for (final PolicyAsString policy : policyHolders) {
+                assertEquals(POLICY_FILE_NAME, policy.getPolicyName());
+                assertEquals(POLICY_TYPE, policy.getPolicyType());
+            }
+        } catch (final Exception exp) {
+            fail("Test must not throw an exception");
+        }
+    }
+
+    @Test
+    public void testDecodePolicyError() throws IOException {
+
+        final PolicyDecoderFileInCsarToPolicy decoder = new PolicyDecoderFileInCsarToPolicy();
+        decoder.configure(GROUP_NAME);
+
+        final File file = new File("unknown.csar");
+        final Csar csar = new Csar(file.getAbsolutePath());
+
+        try {
+            decoder.canHandle(csar);
+            decoder.decode(csar);
+            fail("Test must throw an exception");
+        } catch (final Exception exp) {
+            assertTrue(exp.getMessage().contains("Failed decoding the policy"));
+        }
+    }
+}
 
     public DummyPolicy getDecodedPolicy() {
         return decodedPolicy;
     }
+
+    @Override
+    public void configure(final String parameterGroupName) {}
 }
 
     private Map<String, PolicyDecoderParameters> getPolicyDecoders() {
         final Map<String, PolicyDecoderParameters> policyDecoders = new HashMap<String, PolicyDecoderParameters>();
         final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters("DummyDecoder",
-                "org.onap.policy.distribution.reception.handling.sdc.DummyDecoder");
+                "org.onap.policy.distribution.reception.handling.sdc.DummyDecoder", "DummyDecoderConfiguration");
         policyDecoders.put("DummyDecoderKey", pDParameters);
         return policyDecoders;
     }
 
  */
 public interface PolicyDecoder<S extends PolicyInput, T extends Policy> {
 
+    /**
+     * Configure the policy decoder. This method will be invoked immediately after instantiation in order for the policy
+     * decoder to configure itself.
+     *
+     * @param parameterGroupName the name of the parameter group which contains the configuration for the policy decoder
+     */
+    void configure(String parameterGroupName);
+
     /**
      * Can the decoder handle input of the specified type.
      *
 
                         (Class<PolicyDecoder<PolicyInput, Policy>>) Class
                                 .forName(decoderParameters.getDecoderClassName());
                 final PolicyDecoder<PolicyInput, Policy> decoder = policyDecoderClass.newInstance();
+                decoder.configure(decoderParameters.getDecoderConfigurationName());
                 policyDecoders.add(decoder);
             } catch (final ClassNotFoundException | InstantiationException | IllegalAccessException exp) {
                 LOGGER.error("exception occured while initializing decoders", exp);
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.parameters;
+
+import org.onap.policy.common.parameters.ParameterGroup;
+import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
+
+/**
+ * Base class of all {@link ParameterGroup} classes for configuration parameters for {@link PolicyDecoder} classes.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public abstract class PolicyDecoderConfigurationParameterGroup implements ParameterGroup {
+
+    private String name;
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+}
 
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.reception.parameters;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+
+import java.lang.reflect.Type;
+
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * This class deserialises policy decoder parameters from JSON.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class PolicyDecoderConfigurationParametersJsonAdapter
+        implements JsonDeserializer<PolicyDecoderConfigurationParameterGroup> {
+    private static final XLogger LOGGER =
+            XLoggerFactory.getXLogger(PolicyDecoderConfigurationParametersJsonAdapter.class);
+
+    private static final String PARAMETER_CLASS_NAME = "parameterClassName";
+    private static final String POLICY_DECODER_PARAMETERS = "parameters";
+
+    @Override
+    public PolicyDecoderConfigurationParameterGroup deserialize(final JsonElement json, final Type typeOfT,
+            final JsonDeserializationContext context) {
+        final JsonObject jsonObject = json.getAsJsonObject();
+
+        final String policyDecoderParameterClassName = getParameterGroupClassName(jsonObject);
+        final Class<?> policyDecoderParameterClass = getParameterGroupClass(policyDecoderParameterClassName);
+
+        return context.deserialize(jsonObject.get(POLICY_DECODER_PARAMETERS), policyDecoderParameterClass);
+    }
+
+    private String getParameterGroupClassName(final JsonObject jsonObject) {
+        final JsonPrimitive classNameJsonPrimitive = ((JsonPrimitive) jsonObject.get(PARAMETER_CLASS_NAME));
+
+        if (classNameJsonPrimitive == null || classNameJsonPrimitive.getAsString().length() == 0) {
+            final String errorMessage = "parameter \"" + PARAMETER_CLASS_NAME + "\" value \""
+                    + (classNameJsonPrimitive != null ? classNameJsonPrimitive.getAsString() : "null")
+                    + "\" invalid in JSON file";
+            LOGGER.warn(errorMessage);
+            throw new IllegalArgumentException(errorMessage);
+        }
+        return classNameJsonPrimitive.getAsString().replaceAll("\\s+", "");
+    }
+
+    private Class<?> getParameterGroupClass(final String policyDecoderParameterClassName) {
+        Class<?> policyDecoderParameterClass = null;
+        try {
+            policyDecoderParameterClass = Class.forName(policyDecoderParameterClassName);
+        } catch (final ClassNotFoundException exp) {
+            final String errorMessage = "parameter \"" + PARAMETER_CLASS_NAME + "\" value \""
+                    + policyDecoderParameterClassName + "\", could not find class";
+            LOGGER.warn(errorMessage, exp);
+            throw new IllegalArgumentException(errorMessage, exp);
+        }
+        return policyDecoderParameterClass;
+    }
+
+}
 
 
     private String decoderType;
     private String decoderClassName;
+    private String decoderConfigurationName;
 
     /**
      * Constructor for instantiating PolicyDecoderParameters.
      *
      * @param decoderType the policy decoder type
      * @param decoderClassName the policy decoder class name
+     * @param decoderConfigurationName the policy decoder configuration name
      */
-    public PolicyDecoderParameters(final String decoderType, final String decoderClassName) {
+    public PolicyDecoderParameters(final String decoderType, final String decoderClassName,
+            final String decoderConfigurationName) {
         this.decoderType = decoderType;
         this.decoderClassName = decoderClassName;
+        this.decoderConfigurationName = decoderConfigurationName;
     }
 
     /**
         return decoderClassName;
     }
 
+    /**
+     * Return the name of the decoder configuration of this {@link PolicyDecoderParameters} instance.
+     *
+     * @return the the name of the decoder configuration
+     */
+    public String getDecoderConfigurationName() {
+        return decoderConfigurationName;
+    }
+
     /**
      * {@inheritDoc}
      */
 
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+
 import org.junit.Test;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.forwarding.PolicyForwarder;
     private static final String FORWARDER_CLASS_NAME =
             "org.onap.policy.distribution.reception.handling.DummyPolicyForwarder";
     private static final String FORWARDER_CONFIGURATION_PARAMETERS = "DummyConfiguration";
+    private static final String DECODER_CONFIGURATION_PARAMETERS = "DummyDecoderConfiguration";
 
     @Test
     public void testInputReceived() throws PolicyDecodingException, NoSuchFieldException, SecurityException,
 
     private Map<String, PolicyDecoderParameters> getPolicyDecoders() {
         final Map<String, PolicyDecoderParameters> policyDecoders = new HashMap<String, PolicyDecoderParameters>();
-        final PolicyDecoderParameters pDParameters = new PolicyDecoderParameters(DECODER_TYPE, DECODER_CLASS_NAME);
+        final PolicyDecoderParameters pDParameters =
+                new PolicyDecoderParameters(DECODER_TYPE, DECODER_CLASS_NAME, DECODER_CONFIGURATION_PARAMETERS);
         policyDecoders.put(DECODER_KEY, pDParameters);
         return policyDecoders;
     }
 
     public Collection<Policy> decode(final PolicyInput input) throws PolicyDecodingException {
         return policesToReturn;
     }
+
+    @Override
+    public void configure(final String parameterGroupName) {}
 }