diff --git a/src/main/docker/frontend/Dockerfile b/src/main/docker/frontend/Dockerfile
index 279e94d..1bcf4b0 100644
--- a/src/main/docker/frontend/Dockerfile
+++ b/src/main/docker/frontend/Dockerfile
@@ -51,4 +51,5 @@
 RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
 COPY nginx/nginx.conf /etc/nginx/conf.d
 EXPOSE 443
+USER clamp
 CMD ["nginx", "-g", "daemon off;"]
\ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java
index 44ee522..d47bc96 100644
--- a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java
+++ b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java
@@ -35,6 +35,7 @@
 import javax.persistence.Transient;
 
 import org.apache.camel.Exchange;
+import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.loop.Loop;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.clamp.policy.operational.OperationalPolicy;
@@ -81,18 +82,44 @@
     public static String createPoliciesPayloadPdpGroup(Loop loop) {
         JsonObject jsonObject = new JsonObject();
         JsonArray jsonArray = new JsonArray();
-        jsonObject.add("policies", jsonArray);
+        jsonObject.add("groups", jsonArray);
 
-        for (String policyName : PolicyComponent.listPolicyNamesPdpGroup(loop)) {
-            JsonObject policyNode = new JsonObject();
-            jsonArray.add(policyNode);
-            policyNode.addProperty("policy-id", policyName);
+        for (OperationalPolicy opPolicy : loop.getOperationalPolicies()) {
+            jsonArray.add(createPdpDeploymentPayload(opPolicy.getPdpGroup(), opPolicy.getPdpSubGroup(),
+                    opPolicy.getPolicyModel().getPolicyModelType(), opPolicy.getPolicyModel().getVersion()));
         }
+
+        for (MicroServicePolicy msPolicy : loop.getMicroServicePolicies()) {
+            jsonArray.add(createPdpDeploymentPayload(msPolicy.getPdpGroup(), msPolicy.getPdpSubGroup(),
+                    msPolicy.getPolicyModel().getPolicyModelType(), msPolicy.getPolicyModel().getVersion()));
+        }
+
         String payload = new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject);
         logger.info("PdpGroup policy payload: " + payload);
         return new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject);
     }
 
+    private static JsonObject createPdpDeploymentPayload(String pdpGroup, String pdpSubGroup,
+            String policyType, String version) {
+        JsonObject pdpGroupNode = new JsonObject();
+        JsonArray subPdpArray = new JsonArray();
+        pdpGroupNode.addProperty("name", pdpGroup);
+        pdpGroupNode.add("deploymentSubgroups", subPdpArray);
+
+        JsonObject pdpSubGroupNode = new JsonObject();
+        subPdpArray.add(pdpSubGroupNode);
+        pdpSubGroupNode.addProperty("pdpType", pdpSubGroup);
+        pdpSubGroupNode.addProperty("action", "POST");
+
+        JsonArray policyArray = new JsonArray();
+        pdpSubGroupNode.add("policies", policyArray);
+        JsonObject policyNode = new JsonObject();
+        policyNode.addProperty("name", policyType);
+        policyNode.addProperty("version", version);
+        policyArray.add(policyNode);
+        return pdpGroupNode;
+    }
+
     /**
      * Generates the list of policy names that must be send/remove to/from active
      * PDP group.
diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
index 34d524a..6c6fb0c 100644
--- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
+++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
@@ -37,7 +37,6 @@
 import org.junit.Test;
 import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.clds.util.ResourceFileUtil;
-import org.onap.clamp.loop.components.external.PolicyComponent;
 import org.onap.clamp.loop.log.LogType;
 import org.onap.clamp.loop.log.LoopLog;
 import org.onap.clamp.loop.service.Service;
@@ -46,7 +45,6 @@
 import org.onap.clamp.loop.template.PolicyModel;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.clamp.policy.operational.OperationalPolicy;
-import org.skyscreamer.jsonassert.JSONAssert;
 
 public class LoopToJsonTest {
 
@@ -173,25 +171,4 @@
         assertThat(loopTestDeserialized).isEqualToIgnoringGivenFields(loopTest2, "modelService", "svgRepresentation",
                 "blueprint", "components");
     }
-
-    /**
-     * This tests the GSON encode/decode of pdpGroup.
-     *
-     * @throws IOException In case of issues
-     */
-    @Test
-    public void createPoliciesPayloadPdpGroupTest() throws IOException {
-        Loop loopTest = getLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
-                "123456789", "https://dcaetest.org", "UUID-blueprint");
-        OperationalPolicy opPolicy = this.getOperationalPolicy(
-                ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), "GuardOpPolicyTest");
-        loopTest.addOperationalPolicy(opPolicy);
-        MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
-                "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
-                "{\"param1\":\"value1\"}", true);
-        loopTest.addMicroServicePolicy(microServicePolicy);
-
-        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/pdp-group-policy-payload.json"),
-                PolicyComponent.createPoliciesPayloadPdpGroup(loopTest), false);
-    }
 }
diff --git a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java
index e822dfb..52e10d2 100644
--- a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java
+++ b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java
@@ -24,15 +24,20 @@
 package org.onap.clamp.loop;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
 import java.io.IOException;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.onap.clamp.clds.util.ResourceFileUtil;
 import org.onap.clamp.loop.components.external.ExternalComponentState;
 import org.onap.clamp.loop.components.external.PolicyComponent;
+import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.clamp.policy.operational.OperationalPolicy;
 
 public class PolicyComponentTest {
 
@@ -243,4 +248,36 @@
 
         assertThat(state4.getStateName()).isEqualTo("IN_ERROR");
     }
+
+    /**
+     * Test the create policies payload PdpGroup test.
+     */
+    @Test
+    public void createPoliciesPayloadPdpGroupTest() throws IOException {
+        Loop loopTest = new Loop("ControlLoopTest", "<xml></xml>");
+        PolicyModel policyModel1 = new PolicyModel("onap.policies.monitoring.test", null, "1.0.0");
+
+        MicroServicePolicy microServicePolicy = new MicroServicePolicy("configPolicyTest", policyModel1, true,
+                new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), null);
+        microServicePolicy.setPdpGroup("pdpGroup1");
+        microServicePolicy.setPdpSubGroup("pdpSubgroup1");
+
+        loopTest.addMicroServicePolicy(microServicePolicy);
+
+        PolicyModel policyModel2 = new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0");
+        OperationalPolicy opPolicy = new OperationalPolicy("opPolicy", loopTest,
+                new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), policyModel2, null);
+        opPolicy.setPdpGroup("pdpGroup2");
+        opPolicy.setPdpSubGroup("pdpSubgroup2");
+
+        loopTest.addOperationalPolicy(opPolicy);
+
+        LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", "svg", 1, null);
+        loopTemplate.setDcaeBlueprintId("UUID-blueprint");
+        loopTest.setLoopTemplate(loopTemplate);
+
+        String payload = PolicyComponent.createPoliciesPayloadPdpGroup(loopTest);
+        String expectedRes = ResourceFileUtil.getResourceAsString("tosca/pdp-group-policy-payload.json");
+        assertThat(payload).isEqualTo(expectedRes);
+    }
 }
diff --git a/src/test/resources/tosca/pdp-group-policy-payload.json b/src/test/resources/tosca/pdp-group-policy-payload.json
index ad3a5b4..93a8545 100644
--- a/src/test/resources/tosca/pdp-group-policy-payload.json
+++ b/src/test/resources/tosca/pdp-group-policy-payload.json
@@ -1,16 +1,34 @@
 {
-  "policies": [
+  "groups": [
     {
-      "policy-id": "GuardOpPolicyTest"
+      "name": "pdpGroup2",
+      "deploymentSubgroups": [
+        {
+          "pdpType": "pdpSubgroup2",
+          "action": "POST",
+          "policies": [
+            {
+              "name": "onap.policies.controlloop.Operational",
+              "version": "1.0.0"
+            }
+          ]
+        }
+      ]
     },
     {
-      "policy-id": "guard.minmax.new"
-    },
-    {
-      "policy-id": "guard.frequency.new"
-    },
-    {
-      "policy-id": "configPolicyTest"
+      "name": "pdpGroup1",
+      "deploymentSubgroups": [
+        {
+          "pdpType": "pdpSubgroup1",
+          "action": "POST",
+          "policies": [
+            {
+              "name": "onap.policies.monitoring.test",
+              "version": "1.0.0"
+            }
+          ]
+        }
+      ]
     }
   ]
 }
\ No newline at end of file
