diff --git a/broker/src/asapo_broker/database/mongodb_streams.go b/broker/src/asapo_broker/database/mongodb_streams.go
index 243df816d1e182c2dd767e5dc0db106a57ee40d8..a182f5080409c00116af1958d2b65dcc49983e75 100644
--- a/broker/src/asapo_broker/database/mongodb_streams.go
+++ b/broker/src/asapo_broker/database/mongodb_streams.go
@@ -190,16 +190,8 @@ func (ss *Streams) updateFromDb(db *Mongodb, db_name string) (StreamsRecord, err
 }
 
 func getFiltersFromString(filterString string) (string, string, error) {
-	firstStream := ""
-	streamStatus := ""
-	s := strings.Split(filterString, "_")
-	switch len(s) {
-	case 1:
-		firstStream = s[0]
-	case 2:
-		firstStream = s[0]
-		streamStatus = s[1]
-	default:
+	firstStream, streamStatus, err := utils.DecodeTwoStrings(filterString)
+	if err!=nil {
 		return "", "", errors.New("wrong format: " + filterString)
 	}
 	if streamStatus == "" {
diff --git a/broker/src/asapo_broker/database/mongodb_test.go b/broker/src/asapo_broker/database/mongodb_test.go
index e4c8f458d43b84ae615dfd8e0b0ef4a1435c53f2..c81813611b03dbed3b7124ca1fa8227ce88ca897 100644
--- a/broker/src/asapo_broker/database/mongodb_test.go
+++ b/broker/src/asapo_broker/database/mongodb_test.go
@@ -930,7 +930,7 @@ func TestMongoDBListStreams(t *testing.T) {
 		}
 		var rec_streams_expect, _ = json.Marshal(test.expectedStreams)
 
-		res, err := db.ProcessRequest(Request{DbName: dbname, Stream: "0", Op: "streams", ExtraParam: test.from})
+		res, err := db.ProcessRequest(Request{DbName: dbname, Stream: "0", Op: "streams", ExtraParam: utils.EncodeTwoStrings(test.from,"")})
 		if test.ok {
 			assert.Nil(t, err, test.test)
 			assert.Equal(t, string(rec_streams_expect), string(res), test.test)
diff --git a/broker/src/asapo_broker/database/streams_test.go b/broker/src/asapo_broker/database/streams_test.go
index fef6ff3afb5d5f5f74bcf85975c5e22748d2388e..4ba11e0b3986ff93ea26289054a11f573d670e5c 100644
--- a/broker/src/asapo_broker/database/streams_test.go
+++ b/broker/src/asapo_broker/database/streams_test.go
@@ -3,6 +3,7 @@
 package database
 
 import (
+	"asapo_common/utils"
 	"fmt"
 	"github.com/stretchr/testify/suite"
 	"testing"
@@ -105,8 +106,8 @@ func (suite *StreamsTestSuite) TestStreamsMultipleRequests() {
 	db.insertRecord(dbname, collection, &rec_dataset1_incomplete)
 	db.insertRecord(dbname, collection, &rec_finished)
 	db.insertRecord(dbname, collection2, &rec_dataset1_incomplete)
-	rec, err := streams.getStreams(&db, Request{DbName: dbname, ExtraParam: "_unfinished"})
-	rec2, err2 := streams.getStreams(&db, Request{DbName: dbname, ExtraParam: "_finished"})
+	rec, err := streams.getStreams(&db, Request{DbName: dbname, ExtraParam: "0/unfinished"})
+	rec2, err2 := streams.getStreams(&db, Request{DbName: dbname, ExtraParam: "0/finished"})
 	suite.Nil(err)
 	suite.Equal(collection2, rec.Streams[0].Name)
 	suite.Equal(1, len(rec.Streams))
@@ -143,17 +144,17 @@ var streamFilterTests=[]struct{
 	message string
 }{
 	{request: Request{DbName:dbname, ExtraParam:""},error: false,streams: []string{collection,collection2},message: "default all streams"},
-	{request: Request{DbName:dbname, ExtraParam:"_"},error: false,streams: []string{collection,collection2},message: "default _ all streams"},
-	{request: Request{DbName:dbname, ExtraParam:collection},error: false,streams: []string{collection,collection2},message: "first parameter only -  all streams"},
-	{request: Request{DbName:dbname, ExtraParam:"_all"},error: false,streams: []string{collection,collection2},message: "second parameter only -  all streams"},
-	{request: Request{DbName:dbname, ExtraParam:"_finished"},error: false,streams: []string{collection2},message: "second parameter only -  finished streams"},
-	{request: Request{DbName:dbname, ExtraParam:"_unfinished"},error: false,streams: []string{collection},message: "second parameter only -  unfinished streams"},
-	{request: Request{DbName:dbname, ExtraParam:collection2+"_all"},error: false,streams: []string{collection2},message: "from stream2"},
-	{request: Request{DbName:dbname, ExtraParam:collection2+"_unfinished"},error: false,streams: []string{},message: "from stream2 and filter"},
-	{request: Request{DbName:dbname, ExtraParam:collection2+"_bla"},error: true,streams: []string{},message: "wrong filter"},
-	{request: Request{DbName:dbname, ExtraParam:collection2+"_all_aaa"},error: true,streams: []string{},message: "wrong filter2"},
-	{request: Request{DbName:dbname, ExtraParam:"blabla"},error: false,streams: []string{},message: "from unknown stream returns nothing"},
-	{request: Request{DbName:dbname, ExtraParam:collection2+"_"},error: false,streams: []string{collection2},message: "from stream2, first parameter only"},
+	{request: Request{DbName:dbname, ExtraParam:"0/"},error: false,streams: []string{collection,collection2},message: "default 0/ all streams"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings(collection,"")},error: false,streams: []string{collection,collection2},message: "first parameter only -  all streams"},
+	{request: Request{DbName:dbname, ExtraParam:"0/all"},error: false,streams: []string{collection,collection2},message: "second parameter only -  all streams"},
+	{request: Request{DbName:dbname, ExtraParam:"0/finished"},error: false,streams: []string{collection2},message: "second parameter only -  finished streams"},
+	{request: Request{DbName:dbname, ExtraParam:"0/unfinished"},error: false,streams: []string{collection},message: "second parameter only -  unfinished streams"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings(collection2,"all")},error: false,streams: []string{collection2},message: "from stream2"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings(collection2,"unfinished")},error: false,streams: []string{},message: "from stream2 and filter"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings(collection2,"bla")},error: true,streams: []string{},message: "wrong filter"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings(collection2,"all_aaa")},error: true,streams: []string{},message: "wrong filter2"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings("blabla","")},error: false,streams: []string{},message: "from unknown stream returns nothing"},
+	{request: Request{DbName:dbname, ExtraParam:utils.EncodeTwoStrings(collection2,"")},error: false,streams: []string{collection2},message: "from stream2, first parameter only"},
 }
 
 func (suite *StreamsTestSuite) TestStreamFilters() {
diff --git a/broker/src/asapo_broker/server/get_commands_test.go b/broker/src/asapo_broker/server/get_commands_test.go
index 980946e49cd6022dc1c781fd8e3098729a6778f3..3f34750b20451d69d8fc62f456070e905f1327b7 100644
--- a/broker/src/asapo_broker/server/get_commands_test.go
+++ b/broker/src/asapo_broker/server/get_commands_test.go
@@ -52,7 +52,7 @@ var testsGetCommand = []struct {
 		expectedGroupID + "/next","&resend_nacks=true&delay_ms=10000&resend_attempts=3","10000_3"},
 	{"size", expectedSource,expectedStream, "", expectedStream  + "/size","",""},
 	{"size",expectedSource, expectedStream, "", expectedStream  + "/size","&incomplete=true","true"},
-	{"streams",expectedSource, "0", "", "0/streams","","_"},
+	{"streams",expectedSource, "0", "", "0/streams","","0/"},
 	{"lastack", expectedSource,expectedStream, expectedGroupID, expectedStream + "/" + expectedGroupID + "/lastack","",""},
 }
 
diff --git a/broker/src/asapo_broker/server/get_streams.go b/broker/src/asapo_broker/server/get_streams.go
index a22274553f58663c2bdbd830c246344b48f0dea9..01e1e8edc57e920fecee4d2b9560f5087363ca3f 100644
--- a/broker/src/asapo_broker/server/get_streams.go
+++ b/broker/src/asapo_broker/server/get_streams.go
@@ -1,6 +1,7 @@
 package server
 
 import (
+	"asapo_common/utils"
 	"net/http"
 )
 
@@ -8,5 +9,7 @@ func routeGetStreams(w http.ResponseWriter, r *http.Request) {
 	keys := r.URL.Query()
 	from := keys.Get("from")
 	filter := keys.Get("filter")
-	processRequest(w, r, "streams", from+"_"+filter, false)
+	utils.EncodeTwoStrings(from,filter)
+	encoded := utils.EncodeTwoStrings(from,filter)
+	processRequest(w, r, "streams", encoded, false)
 }
diff --git a/common/go/src/asapo_common/utils/helpers.go b/common/go/src/asapo_common/utils/helpers.go
index 714cebf61ad85db215259c5147d06af861c51ad5..ed19b875d14bdcba203b19efaaf0d65798520933 100644
--- a/common/go/src/asapo_common/utils/helpers.go
+++ b/common/go/src/asapo_common/utils/helpers.go
@@ -2,9 +2,10 @@ package utils
 
 import (
 	json "encoding/json"
+	"errors"
 	"io/ioutil"
+	"strconv"
 	"strings"
-	"errors"
 )
 
 func StringInSlice(a string, list []string) bool {
@@ -102,3 +103,20 @@ func MapToStruct(m map[string]interface{}, val interface{}) error {
 	}
 	return nil
 }
+
+func EncodeTwoStrings(first,second string) string {
+	return strconv.Itoa(len(first))+"/"+first + second
+}
+
+func DecodeTwoStrings(encoded string) (string,string,error) {
+	temp := strings.SplitN(encoded,"/",2);
+	if len(temp)!=2 {
+		return "","",errors.New("wrong input: "+encoded)
+	}
+	length,err := strconv.Atoi(temp[0]);
+	if err!=nil {
+		return "","",errors.New("wrong input: "+encoded)
+	}
+	return temp[1][:length],temp[1][length:],err
+
+}
\ No newline at end of file
diff --git a/common/go/src/asapo_common/utils/helpers_test.go b/common/go/src/asapo_common/utils/helpers_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..6c817f837ec34759c66e4b1d9f4cd933a2f84068
--- /dev/null
+++ b/common/go/src/asapo_common/utils/helpers_test.go
@@ -0,0 +1,33 @@
+package utils
+
+import (
+	"github.com/stretchr/testify/assert"
+	"testing"
+)
+
+
+
+var encodeTests = []struct {
+	input       string
+	str1        string
+	str2       string
+	message    string
+}{
+	{"5/hellohello1","hello", "hello1","ok"},
+	{"0/","", "","ok"},
+	{"5/hello","hello", "","ok"},
+	{"10/hello_testall","hello_test", "all","ok"},
+
+}
+
+func TestEncodeDecode(t *testing.T) {
+	for _, test := range encodeTests {
+		encoded:=EncodeTwoStrings(test.str1,test.str2)
+		assert.Equal(t, test.input,encoded,test.message)
+		s1,s2,err:=DecodeTwoStrings(test.input)
+		assert.Equal(t, test.str1,s1,test.message)
+		assert.Equal(t, test.str2,s2,test.message)
+		assert.NoError(t, err,test.message)
+	}
+}
+