Merge branch 'DEVELOP_BE' of ssh://172.18.22.160:29418/oK/PlannedGridMeasures/mics-backend into DEVELOP_BE
diff --git a/devlocal.yml b/devlocal.yml
index 2d04435..f062f10 100644
--- a/devlocal.yml
+++ b/devlocal.yml
@@ -10,6 +10,8 @@
   password: admin
   exchangeName: openk-pgm-exchange
   autoSetup: true
+  queueNames : pgm-applied-queue, pgm-forapproval-queue, pgm-canceled-queue, pgm-approved-queue, pgm-rejected-queue, pgm-requested-queue, pgm-released-queue, pgm-finished-queue, pgm-closed-queue
+
 
 dbConn:
   driver: org.postgresql.Driver
diff --git a/devserver.yml b/devserver.yml
index 8646ad5..40b6e5c 100644
--- a/devserver.yml
+++ b/devserver.yml
@@ -10,6 +10,7 @@
   password: admin
   exchangeName: openk-pgm-exchange
   autoSetup: true
+  queueNames : pgm-applied-queue, pgm-forapproval-queue, pgm-canceled-queue, pgm-approved-queue, pgm-rejected-queue, pgm-requested-queue, pgm-released-queue, pgm-finished-queue, pgm-closed-queue
 
 dbConn:
   driver: org.postgresql.Driver
diff --git a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
index 96167dc..9225e92 100644
--- a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
+++ b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
@@ -2017,6 +2017,7 @@
     password: admin
     exchangeName: openk-pgm-exchange
     autoSetup: true
+    queueNames : pgm-applied-queue, pgm-forapproval-queue, pgm-canceled-queue, pgm-approved-queue, pgm-rejected-queue, pgm-requested-queue, pgm-released-queue, pgm-finished-queue, pgm-closed-queue
   ...
 }
 
@@ -2030,7 +2031,7 @@
 Autosetup means the Planned Grid Measure Microservice will create the Exchange according to the name defined one line
 above. All needed Queues will be created and bind to the Exchange.
 
-The automatically created queues and their belonging routing keys are:
+The automatically created queues and their belonging routing keys are, according to the 'queueNames' parameter mentioned above:
 
 [source]
 Queuename: pgm-applied-queue    | Routing key:  applied
diff --git a/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java b/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java
index 2532742..99220e9 100644
--- a/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java
+++ b/src/main/java/org/eclipse/openk/PlannedGridMeasuresConfiguration.java
@@ -13,8 +13,11 @@
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.dropwizard.Configuration;
+import org.eclipse.openk.core.controller.MailAddressCache;
 import org.hibernate.validator.constraints.NotEmpty;
 
+import java.util.*;
+
 public class PlannedGridMeasuresConfiguration extends Configuration {
 
     public static class RabbitmqConfiguration {
@@ -37,6 +40,11 @@
         @JsonProperty
         private boolean autoSetup;
 
+        @JsonProperty
+        private String queueNames;
+
+
+
         public String getHost() {
             return host;
         }
@@ -84,6 +92,29 @@
         public void setAutoSetup(boolean autoSetup) {
             this.autoSetup = autoSetup;
         }
+
+        public String getQueueNames() { return queueNames; }
+
+        public void setQueueNames(String queueNames) { this.queueNames = queueNames; }
+
+        public List<String> getQueueNamesAsList() {
+
+            List<String> singleQueueNameList = new ArrayList<>();
+            Set<String> singleQueueNameUniqueSet = new HashSet<>();
+            List<String> singleQueueNameUniqueList;
+
+            String queueNamesString = getQueueNames();
+            queueNamesString = queueNamesString.replace(";", ",");
+            String[] singleQueueNames = queueNamesString.split(",");
+
+            singleQueueNameList.addAll(Arrays.asList(singleQueueNames));
+            singleQueueNameList.replaceAll(String::trim);
+
+            singleQueueNameUniqueSet.addAll(singleQueueNameList);
+
+            singleQueueNameUniqueList = new ArrayList<>(singleQueueNameUniqueSet);
+            return singleQueueNameUniqueList;
+        }
     }
 
     public static class EmailConfiguration {
diff --git a/src/main/java/org/eclipse/openk/common/Globals.java b/src/main/java/org/eclipse/openk/common/Globals.java
index 84aeb40..b1676b0 100644
--- a/src/main/java/org/eclipse/openk/common/Globals.java
+++ b/src/main/java/org/eclipse/openk/common/Globals.java
@@ -27,10 +27,5 @@
 
     public static final String DATE_ZONE_ID_EUROPE = "Europe/Berlin";
 
-    //Sonar complaining about RABBIT_MQ_QUEUE_NAME_LIST beeing muteable althoug Arrays.asList returns a immutable List = False positve
-    public static final List<String> RABBIT_MQ_QUEUE_NAME_LIST = Arrays.asList("pgm-applied-queue","pgm-forapproval-queue", "pgm-canceled-queue", //NOSONAR
-        "pgm-approved-queue", "pgm-rejected-queue", "pgm-requested-queue", "pgm-released-queue",
-        "pgm-finished-queue", "pgm-closed-queue");
-
     private Globals() {}
 }
diff --git a/src/main/java/org/eclipse/openk/core/controller/InitRabbitMqSetup.java b/src/main/java/org/eclipse/openk/core/controller/InitRabbitMqSetup.java
index 617ed31..0c09619 100644
--- a/src/main/java/org/eclipse/openk/core/controller/InitRabbitMqSetup.java
+++ b/src/main/java/org/eclipse/openk/core/controller/InitRabbitMqSetup.java
@@ -53,7 +53,9 @@
             Map<String, Object> args = new HashMap<>();
             args.put("x-queue-mode", "lazy");
 
-            for (String queueName : Globals.RABBIT_MQ_QUEUE_NAME_LIST) {
+            List<String> queueNames = rabbitmqConfiguration.getQueueNamesAsList();
+
+            for (String queueName : queueNames) {
                 channel.queueDeclare(queueName, true, false, false, args);
                 String routingKey = queueName.split("-")[1];
                 channel.queueBind(queueName, rabbitmqConfiguration.getExchangeName(), routingKey);