diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/impl/ProviderOperations.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/impl/ProviderOperations.java
index 85de6bd..f51be28 100644
--- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/impl/ProviderOperations.java
+++ b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/impl/ProviderOperations.java
@@ -89,7 +89,7 @@
             }
 
             //String body = buildReqest(msg.getId(), msg.getUrl(), msg.getIdentityUrl());
-            String body = buildReqest(msg.getHeader().getRequestID(), msg.getPayload().getGenericVnfId(), msg.getPayload().getPgStreams());
+            String body = buildReqest(msg.getHeader().getRequestID(), msg.getPayload().getGenericVnfId(), msg.getPayload().getStreams());
             StringEntity entity = new StringEntity(body);
             entity.setContentType("application/json");
             post.setEntity(new StringEntity(body));
diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/model/CommonMessage.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/model/CommonMessage.java
index 45b99a9..e0dbbab 100644
--- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/model/CommonMessage.java
+++ b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/onap/appc/listener/demo/model/CommonMessage.java
@@ -268,25 +268,16 @@
             this.genericVnfId = genericVnfId;
         }
 
-        @JsonProperty("pg-streams")
-        private pgStreams pgStreams;
+        @JsonProperty("streams")
+        private Streams streams;
 
         /**
          * @return the TenantID
          */
 
-        public String getPgStreams() {
-            String r = "{\\\"pg-streams\\\": {\\\"pg-stream\\\":[";
-            boolean first = true;
-            for(pgStream p : this.pgStreams.streams){
-            	String n = "{\\\"id\\\":\\\""+p.getId()+"\\\", \\\"is-enabled\\\":\\\""+p.getIsEnabled()+"\\\"}";
-            	if(!first){
-            		r = r.concat(",");
-            	}
-            	first = false;
-            	r = r.concat(n);
-            }
-           r=  r.concat("]}}");
+        public String getStreams() {
+            String r = "{\\\"streams\\\": {\\\"active-streams\\\": " + streams.getActiveStreams() +
+                    "}}";
             return r;
         }
 
@@ -294,46 +285,29 @@
          * @param TenantID
          *            the TenantID to set
          */
-        public void setPgStreams(pgStreams pgStreams) {
-            this.pgStreams = pgStreams;
-        }
-
-
-
-
-
-    };
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class pgStreams {
-        @JsonProperty("pg-stream")
-        private Collection<pgStream> streams;
-
-        public Collection<pgStream> getStreams() {
-            return streams;
-        }
-
-        public void setStreams(Collection<pgStream> streams) {
+        public void setStreams(Streams streams) {
             this.streams = streams;
         }
+
+
+
+
+
+    };
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class Streams {
+        
+        @JsonProperty("active-streams")
+        private int activeStreams;
+        
+        public int getActiveStreams() {
+            return this.activeStreams;
+        }
+
+        public void setActiveStreams(int activeStreams) {
+            this.activeStreams = activeStreams;
+        }
+        
     };
 
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class pgStream{
-        public String getId() {
-            return id;
-        }
-        public void setId(String id) {
-            this.id = id;
-        }
-        public String getIsEnabled() {
-            return isEnabled;
-        }
-        public void setIsEnabled(String isEnabled) {
-            this.isEnabled = isEnabled;
-        }
-        @JsonProperty("id")
-        private String id;
-        @JsonProperty("is-enabled")
-        private String isEnabled;
-     };
 }
diff --git a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/AbstractListenerTest.java b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/AbstractListenerTest.java
index 1b37f45..a47175c 100644
--- a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/AbstractListenerTest.java
+++ b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/AbstractListenerTest.java
@@ -42,7 +42,6 @@
 import org.junit.Test;
 import org.onap.appc.listener.AbstractListener;
 import org.onap.appc.listener.ListenerProperties;
-import sun.awt.windows.ThemeReader;
 
 public class AbstractListenerTest {
 
diff --git a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestCommonMessage.java b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestCommonMessage.java
index ebc2706..341492f 100644
--- a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestCommonMessage.java
+++ b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestCommonMessage.java
@@ -30,17 +30,16 @@
 import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Test;
-import org.onap.appc.listener.demo.model.CommonMessage.pgStream;
 
 public class TestCommonMessage {
 
     private CommonMessage commonMessage;
-    private CommonMessage.pgStreams pgStreams;
+    private CommonMessage.Payload payload;
 
     @Before
     public void setUp() {
         commonMessage = new CommonMessage();
-        pgStreams = new CommonMessage.pgStreams();
+        payload = new CommonMessage.Payload();
     }
 
     @Test
@@ -48,11 +47,4 @@
         assertTrue(commonMessage.toJson() instanceof JSONObject);
     }
 
-    @Test
-    public void testStreams() {
-        Collection<pgStream> streams = new ArrayList<>();
-        pgStreams.setStreams(streams);
-        assertSame(streams, pgStreams.getStreams());
-    }
-
 }
diff --git a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestMessages.java b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestMessages.java
index 62ea83a..9cce23d 100644
--- a/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestMessages.java
+++ b/appc-event-listener/appc-event-listener-bundle/src/test/java/org/onap/appc/listener/demo/model/TestMessages.java
@@ -39,7 +39,7 @@
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.onap.appc.listener.demo.model.CommonMessage.pgStream;
+import org.onap.appc.listener.demo.model.CommonMessage.Streams;
 import org.onap.appc.listener.demo.model.IncomingMessage;
 import org.onap.appc.listener.demo.model.OutgoingMessage;
 import org.onap.appc.listener.demo.model.Status;
@@ -117,18 +117,13 @@
     public void testPayload() {
         CommonMessage.Payload payload = new CommonMessage.Payload();
         payload.setGenericVnfId("VNF_ID");
-        CommonMessage.pgStream pgStream = new CommonMessage.pgStream();
-        pgStream.setId("ID");
-        pgStream.setIsEnabled("true");
-        CommonMessage.pgStreams pgStreams = new CommonMessage.pgStreams();
-        Collection<pgStream> collectionPgStreams = new ArrayList<pgStream>();
-        collectionPgStreams.add(pgStream);
-        pgStreams.setStreams(collectionPgStreams);
-        payload.setPgStreams(pgStreams);
+        CommonMessage.Streams streams = new CommonMessage.Streams();
+        streams.setActiveStreams(7);
+        payload.setStreams(streams);
         in.setPayload(payload);
         assertEquals("VNF_ID", in.getPayload().getGenericVnfId());
-        assertEquals("{\\\"pg-streams\\\": {\\\"pg-stream\\\":[{\\\"id\\\":\\\"ID\\\", \\\"is-enabled\\\":\\\"true\\\"}]}}",
-                in.getPayload().getPgStreams());
+        assertEquals("{\\\"streams\\\": {\\\"active-streams\\\": 7}}",
+                in.getPayload().getStreams());
     }
 
     @Test
