Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend into SI-540-Direkter-Email-Link

# Conflicts:
#	gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/SwaggerConfig.java
diff --git a/gfsBackendService/Dockerfile_Branch b/gfsBackendService/Dockerfile_Branch
index 0c2947f..6b742d7 100644
--- a/gfsBackendService/Dockerfile_Branch
+++ b/gfsBackendService/Dockerfile_Branch
@@ -10,4 +10,4 @@
 
 COPY /target/grid-failure-information.backend.service.jar /usr/src/cbd/
 WORKDIR usr/src/cbd
-CMD ["java", "-jar", "-Dspring.config.name=application", "-Dspring.profiles.active=devserver-branch,swagger", "grid-failure-information.backend.service.jar"]
\ No newline at end of file
+CMD ["java", "-jar", "-Dspring.config.name=application", "-Dspring.profiles.active=devserver-branch", "grid-failure-information.backend.service.jar"]
\ No newline at end of file
diff --git a/gfsBackendService/Dockerfile_DevServer b/gfsBackendService/Dockerfile_DevServer
index c8f0f0b..71fc8f5 100644
--- a/gfsBackendService/Dockerfile_DevServer
+++ b/gfsBackendService/Dockerfile_DevServer
@@ -10,4 +10,4 @@
 
 COPY /target/grid-failure-information.backend.service.jar /usr/src/cbd/
 WORKDIR usr/src/cbd
-CMD ["java", "-jar", "-Dspring.profiles.active=devserver,swagger", "grid-failure-information.backend.service.jar"]
\ No newline at end of file
+CMD ["java", "-jar", "-Dspring.profiles.active=devserver", "grid-failure-information.backend.service.jar"]
\ No newline at end of file
diff --git a/gfsBackendService/Dockerfile_DevServerUnsecure b/gfsBackendService/Dockerfile_DevServerUnsecure
index 78bb50d..0db171e 100644
--- a/gfsBackendService/Dockerfile_DevServerUnsecure
+++ b/gfsBackendService/Dockerfile_DevServerUnsecure
@@ -10,4 +10,4 @@
 
 COPY /target/grid-failure-information.backend.service.jar /usr/src/cbd/
 WORKDIR usr/src/cbd
-CMD ["java", "-jar", "-Dspring.profiles.active=devserver-unsecure,swagger", "grid-failure-information.backend.service.jar"]
\ No newline at end of file
+CMD ["java", "-jar", "-Dspring.profiles.active=devserver-unsecure", "grid-failure-information.backend.service.jar"]
\ No newline at end of file
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java
index 610d505..3fb2a3d 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java
@@ -24,8 +24,7 @@
 import org.eclipse.openk.gridfailureinformation.constants.Constants;
 import org.springframework.stereotype.Component;
 
-import static org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask.OutputPort.NO;
-import static org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask.OutputPort.YES;
+import static org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask.OutputPort.*;
 import static org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState.*;
 
 @Log4j2
@@ -52,6 +51,9 @@
 
         ProcessTask canceledEndpoint = register( CANCELED,
                 new UIStoreFailureInformationTask( "State CANCELED UI Task", true));
+
+        DecisionTask decidePublished = new DecideFailureInfoPublished();
+        ProcessTask storePubStatusWithdrawnOnCancel = new StorePublishStatusTask(Constants.PUB_STATUS_ZURUECKGEZOGEN);
         ProcessTask publishMessage = register( QUALIFIED,
                 new UIStoreFailureInformationTask( "State QUALIFIED UI Task", true));
 
@@ -80,7 +82,6 @@
         enterMessage.connectOutputTo( storeEditStatusCreated );
         // -> nein
         storeEditStatusCreated.connectOutputTo( qualifyMessage );
-        // TODO Beabreitungsstatus: aktualisiert berücksichtigen: Zweig: Meldung aktualisieren
         qualifyMessage.connectOutputTo(decideCanceled);
         //Meldung storniert?
         decideCanceled.connectOutputTo( YES, storeEditStatusCanceled ); //Status nicht speichern da sonst doppelt, -> nächster Porzessschritt
@@ -88,12 +89,17 @@
 
         storeEditStatusQualified.connectOutputTo(publishMessage);
         publishMessage.connectOutputTo(decideUpdated);
-        decideUpdated.connectOutputTo(YES, storeEditStatusUpdated);
-        //decideUpdated.connectOutputTo(NO, completedEndpoint);
-        decideUpdated.connectOutputTo(NO, setEndDate);
+        decideUpdated.connectOutputTo(PORT1, storeEditStatusUpdated);
+        decideUpdated.connectOutputTo(PORT2, setEndDate);
+        decideUpdated.connectOutputTo(PORT3, storeEditStatusCanceled);
         setEndDate.connectOutputTo(storePublicationStatusWithdrawn);
         storePublicationStatusWithdrawn.connectOutputTo(completedEndpoint);
 
+        storeEditStatusCanceled.connectOutputTo(decidePublished);
+        decidePublished.connectOutputTo( YES, storePubStatusWithdrawnOnCancel);
+        decidePublished.connectOutputTo( NO, canceledEndpoint);
+        storePubStatusWithdrawnOnCancel.connectOutputTo( canceledEndpoint );
+
         storeForceEditStatusQualified.connectOutputTo(publishMessageToChannels);
         publishMessageToChannels.connectOutputTo(storePublicationStatusPublished);
         storePublicationStatusPublished.connectOutputTo(updateMessage);
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoPublished.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoPublished.java
new file mode 100644
index 0000000..fe76268
--- /dev/null
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoPublished.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2018 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+
+package org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks;
+
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.gridfailureinformation.bpmn.base.ProcessException;
+import org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessSubject;
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
+
+@Log4j2
+public class DecideFailureInfoPublished extends DecisionTask<GfiProcessSubject> {
+
+    public DecideFailureInfoPublished() {
+        super("Decision: Ist die Störungsinformation veröffentlicht?");
+    }
+
+    @Override
+    public OutputPort decide(GfiProcessSubject subject) throws ProcessException {
+        boolean isPublished = Constants.PUB_STATUS_VEROEFFENTLICHT.equals(
+                subject.getFailureInformationDto().getPublicationStatus()
+        );
+
+        String loggerOutput1 = "Decide: ";
+
+        if (isPublished) {
+            log.debug(loggerOutput1 + getDescription() + "\" -> Firing YES");
+            return OutputPort.YES;
+        } else {
+            log.debug(loggerOutput1 + getDescription() + "\" -> Firing NO");
+            return OutputPort.NO;
+        }
+    }
+
+}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java
index 11538aa..00f03df 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java
@@ -38,12 +38,18 @@
         String loggerOutput1 = "Decide: ";
 
         if (newState == GfiProcessState.UPDATED) {
-            log.debug(loggerOutput1 + getDescription() + "\" -> Firing YES");
-            return OutputPort.YES;
-        } else if (newState == GfiProcessState.COMPLETED) {
-            log.debug(loggerOutput1 + getDescription() + "\" -> Firing NO");
-            return OutputPort.NO;
-        } else {
+            log.debug(loggerOutput1 + getDescription() + "\" -> Firing PORT1");
+            return OutputPort.PORT1;
+        }
+        else if (newState == GfiProcessState.COMPLETED) {
+            log.debug(loggerOutput1 + getDescription() + "\" -> Firing PORT2");
+            return OutputPort.PORT2;
+        }
+        else if (newState == GfiProcessState.CANCELED) {
+            log.debug(( loggerOutput1 + getDescription() + "\" -> Firing PORT3"));
+            return OutputPort.PORT3;
+        }
+        else {
             throw new ProcessException(this.getDescription() + ": Invalid status request:" + newState,
                     new InternalServerErrorException("invalid.status.request"));
         }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java
index 3e8635e..5c07b80 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java
@@ -78,7 +78,11 @@
     public void resetPublishedStateForChannels( FailureInformationDto dto ) {
         TblFailureInformation tblFailureInformation = environment.getFailureInformationRepository().findByUuid(dto.getUuid())
                 .orElseThrow(() -> new NotFoundException("failure.information.not.found"));
-        tblFailureInformation.getPublicationChannelList().forEach(x -> {
+
+        List<TblFailureInformationPublicationChannel> channelList = environment.getChannelRepository().findByTblFailureInformation(tblFailureInformation);
+
+//        tblFailureInformation.getPublicationChannelList().forEach(x -> {
+        channelList.forEach(x -> {
             x.setPublished(false);
             environment.getChannelRepository().save(x);
         });
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/SwaggerConfig.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/SwaggerConfig.java
index 6c4fb54..fa4d1d0 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/SwaggerConfig.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/SwaggerConfig.java
@@ -15,7 +15,7 @@
 @Log4j2
 @Configuration
 @EnableSwagger2
-@Profile({"swagger"})
+@Profile({"!test","!prod"})
 public class SwaggerConfig {
 
     @Value("${swagger.baseUrl:}")
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationController.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationController.java
index 744da26..a65c98a 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationController.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationController.java
@@ -182,4 +182,16 @@
         failureInformationService.deletePublicationChannelForFailureInfo(failureInfoUuid, publicationChannel);
     }
 
+    @GetMapping("/{failureInfoUuid}/channels")
+    @ApiOperation(value = "Holen Veröffentlichungs-Kanälen für eine Störungsinfo")
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"),
+            @ApiResponse(code = 404, message = "Störungsinformationen wurden nicht gefunden")})
+    @ResponseStatus(HttpStatus.OK)
+    @Secured({"ROLE_GRID-FAILURE-ADMIN", "ROLE_GRID-FAILURE-CREATOR", "ROLE_GRID-FAILURE-QUALIFIER", "ROLE_GRID-FAILURE-PUBLISHER"})
+    public List<FailureInformationPublicationChannelDto> getChannelsForFailureInfo(
+            @ApiParam(name="failureInfoUuid", value= "UUID der Störungsinfo", required = true)
+            @PathVariable UUID failureInfoUuid) {
+        return failureInformationService.getPublicationChannelsForFailureInfo(failureInfoUuid);
+    }
+
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
index 4290e55..cc1db84 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
@@ -78,10 +78,10 @@
         failureInformationDto.setStationIds( stations != null ? stations.stream().map(TblStation::getUuid).collect(Collectors.toList()) : new LinkedList<>());
     }
 
-    @AfterMapping
-    default void populatePublicationChannels(TblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
-        Set<TblFailureInformationPublicationChannel> channels = source.getPublicationChannelList();
-
-        failureInformationDto.setPublicationChannels( channels != null ? channels.stream().map(TblFailureInformationPublicationChannel::getPublicationChannel).collect(Collectors.toList()) : new LinkedList<>());
-    }
+//    @AfterMapping
+//    default void populatePublicationChannels(TblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
+//        Set<TblFailureInformationPublicationChannel> channels = source.getPublicationChannelList();
+//
+//        failureInformationDto.setPublicationChannels( channels != null ? channels.stream().map(TblFailureInformationPublicationChannel::getPublicationChannel).collect(Collectors.toList()) : new LinkedList<>());
+//    }
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
index 47e719c..c6a94ce 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
@@ -142,7 +142,4 @@
     @OneToOne(mappedBy = "tblFailureInformation")
     private TblFailureInformationReminderMailSent failureInformationReminderMailSent;
 
-    @OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL, mappedBy="tblFailureInformation", orphanRemoval = true)
-    private Set<TblFailureInformationPublicationChannel> publicationChannelList = new HashSet<>();
-
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
index 27b45cc..aae6f5b 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
@@ -55,10 +55,10 @@
 
     @Lazy
     @Autowired
-    RabbitMqConfig rabbitMqConfig;
+    private RabbitMqConfig rabbitMqConfig;
 
     @Autowired
-    ProcessHelper processHelper;
+    private ProcessHelper processHelper;
 
     @Autowired
     private RabbitMqProperties rabbitMqProperties;
@@ -67,13 +67,13 @@
     private org.springframework.amqp.rabbit.core.RabbitTemplate rabbitTemplate;
 
     @Autowired
-    FailureInformationService failureInformationService;
+    private FailureInformationService failureInformationService;
 
     @Autowired
-    DistributionGroupMemberService distributionGroupMemberService;
+    private DistributionGroupMemberService distributionGroupMemberService;
 
     @Autowired
-    FailureInformationMapper failureInformationMapper;
+    private FailureInformationMapper failureInformationMapper;
 
     @Autowired
     private FailureInformationRepository failureInformationRepository;
@@ -147,7 +147,6 @@
 
             }
 
-
         }
 
         return countExportedMessages > 0;
@@ -182,11 +181,14 @@
     }
 
     private boolean isChannelAlreadyPublished(String targetChannel, TblFailureInformation existingTblFailureInfo) {
-        if( existingTblFailureInfo.getPublicationChannelList() == null ) {
+
+        List<TblFailureInformationPublicationChannel> publicationChannelList = publicationChannelRepository.findByTblFailureInformation(existingTblFailureInfo);
+
+        if( publicationChannelList == null ) {
             return true;
         }
         Optional<TblFailureInformationPublicationChannel> tf =
-                existingTblFailureInfo.getPublicationChannelList().stream()
+                publicationChannelList.stream()
                         .filter( x -> x.getPublicationChannel().equals(targetChannel) )
                         .findFirst();
 
@@ -204,7 +206,10 @@
     }
 
     private void markChannelAsPublished(String targetChannel, TblFailureInformation existingTblFailureInfo) {
-        Optional<TblFailureInformationPublicationChannel> pubChannelToSave = existingTblFailureInfo.getPublicationChannelList().stream()
+
+        List<TblFailureInformationPublicationChannel> publicationChannelList = publicationChannelRepository.findByTblFailureInformation(existingTblFailureInfo);
+
+        Optional<TblFailureInformationPublicationChannel> pubChannelToSave = publicationChannelList.stream()
                 .filter( x->x.getPublicationChannel().equals(targetChannel))
                 .findFirst();
 
@@ -320,11 +325,6 @@
             contentReplaceMap.put(placeholderDto.getStatusIntern(), statusIntern.getStatus());
         }
 
-//        RefStatus statusExtern = tblFailureInfo.getRefStatusExtern();
-//        if (statusExtern != null) {
-//            contentReplaceMap.put(placeholderDto.getStatusExtern(), statusExtern.getStatus());
-//        }
-
         String publicationStatus = tblFailureInfo.getPublicationStatus();
         if (publicationStatus != null) {
             contentReplaceMap.put(placeholderDto.getPublicationStatus(), publicationStatus);
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
index 86ebf64..39800ff 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
@@ -235,21 +235,21 @@
         resolveExpectedReason(destTblFailureInformation, sourceDto);
         resolveCondensed(destTblFailureInformation, sourceDto);
 
-        if( destTblFailureInformation.getId() != null ) { // not when inserting
-            resolvePublicationChannels(destTblFailureInformation);
-        }
+//        if( destTblFailureInformation.getId() != null ) { // not when inserting
+//            resolvePublicationChannels(destTblFailureInformation);
+//        }
         resolveStationIds(destTblFailureInformation, sourceDto);
         resolveDistributionGroups(destTblFailureInformation, sourceDto);
     }
 
-    private void resolvePublicationChannels(TblFailureInformation destTblFailureInformation) {
-
-        List<TblFailureInformationPublicationChannel> channelList = failureInformationPublicationChannelRepository.findByTblFailureInformation(destTblFailureInformation);
-
-           if(!channelList.isEmpty()){
-               destTblFailureInformation.setPublicationChannelList(Sets.newHashSet(channelList));
-           }
-    }
+//    private void resolvePublicationChannels(TblFailureInformation destTblFailureInformation) {
+//
+//        List<TblFailureInformationPublicationChannel> channelList = failureInformationPublicationChannelRepository.findByTblFailureInformation(destTblFailureInformation);
+//
+//           if(!channelList.isEmpty()){
+//               destTblFailureInformation.setPublicationChannelList(Sets.newHashSet(channelList));
+//           }
+//    }
 
     private void resolveDistributionGroups(TblFailureInformation destTblFailureInformation, FailureInformationDto sourceDto) {
         if( sourceDto.getDistributionGroupUuids() != null ) {
@@ -348,35 +348,35 @@
         }
     }
 
-    protected void updatePublicationChannels(FailureInformationDto sourceDto, TblFailureInformation destTblFailureInformation ){
-
-        // Löschen zugeordneter Kanäle mit published = false
-        TblFailureInformation existingTblFailureInformation = failureInformationRepository.findByUuid(sourceDto.getUuid())
-                .orElseThrow(() -> new NotFoundException(Constants.FAILURE_INFO_UUID_NOT_EXISTING));
-
-        Set<TblFailureInformationPublicationChannel> existingChannels =
-                existingTblFailureInformation.getPublicationChannelList();
-
-        List<TblFailureInformationPublicationChannel>filteredList = existingChannels.stream().filter(x -> !x.isPublished()).collect(Collectors.toList());
-
-        for(TblFailureInformationPublicationChannel channel: filteredList){
-            existingChannels.remove(channel);
-        }
-
-        //Hinzufügen  zugeordneter Kanäle in der Zuordnungstabelle mit published= false (check, damit kein Kanal doppelt)
-        List<String> newChannelList = sourceDto.getPublicationChannels();
-        for(String newChannel: newChannelList){
-            if(existingChannels.stream().filter(x->x.getPublicationChannel().equals(newChannel)).count() == 0){
-                TblFailureInformationPublicationChannel tblFailureInformationPublicationChannel = new TblFailureInformationPublicationChannel();
-                tblFailureInformationPublicationChannel.setTblFailureInformation(existingTblFailureInformation);
-                tblFailureInformationPublicationChannel.setPublicationChannel(newChannel);
-                tblFailureInformationPublicationChannel.setPublished(false);
-
-                existingChannels.add(tblFailureInformationPublicationChannel);
-            }
-        }
-        destTblFailureInformation.setPublicationChannelList(existingChannels);
-    }
+//    protected void updatePublicationChannels(FailureInformationDto sourceDto, TblFailureInformation destTblFailureInformation ){
+//
+//        // Löschen zugeordneter Kanäle mit published = false
+//        TblFailureInformation existingTblFailureInformation = failureInformationRepository.findByUuid(sourceDto.getUuid())
+//                .orElseThrow(() -> new NotFoundException(Constants.FAILURE_INFO_UUID_NOT_EXISTING));
+//
+//        Set<TblFailureInformationPublicationChannel> existingChannels =
+//                existingTblFailureInformation.getPublicationChannelList();
+//
+//        List<TblFailureInformationPublicationChannel>filteredList = existingChannels.stream().filter(x -> !x.isPublished()).collect(Collectors.toList());
+//
+//        for(TblFailureInformationPublicationChannel channel: filteredList){
+//            existingChannels.remove(channel);
+//        }
+//
+//        //Hinzufügen  zugeordneter Kanäle in der Zuordnungstabelle mit published= false (check, damit kein Kanal doppelt)
+//        List<String> newChannelList = sourceDto.getPublicationChannels();
+//        for(String newChannel: newChannelList){
+//            if(existingChannels.stream().filter(x->x.getPublicationChannel().equals(newChannel)).count() == 0){
+//                TblFailureInformationPublicationChannel tblFailureInformationPublicationChannel = new TblFailureInformationPublicationChannel();
+//                tblFailureInformationPublicationChannel.setTblFailureInformation(existingTblFailureInformation);
+//                tblFailureInformationPublicationChannel.setPublicationChannel(newChannel);
+//                tblFailureInformationPublicationChannel.setPublished(false);
+//
+//                existingChannels.add(tblFailureInformationPublicationChannel);
+//            }
+//        }
+//        destTblFailureInformation.setPublicationChannelList(existingChannels);
+//    }
 
     private void setVersionNumber(TblFailureInformation tblFailureInformation){
         List<HtblFailureInformation> hfailureList = histFailureInformationRepository.findByUuid(tblFailureInformation.getUuid());
@@ -776,4 +776,21 @@
 
     }
 
+
+    public List<FailureInformationPublicationChannelDto> getPublicationChannelsForFailureInfo(UUID failureInfoUuid){
+
+        TblFailureInformation existingTblFailureInformation = failureInformationRepository
+                .findByUuid(failureInfoUuid)
+                .orElseThrow(() -> new NotFoundException(Constants.FAILURE_INFO_UUID_NOT_EXISTING));
+
+        List<TblFailureInformationPublicationChannel> publicationChannels = failureInformationPublicationChannelRepository
+                .findByTblFailureInformation(existingTblFailureInformation);
+
+       return publicationChannels
+                .stream()
+                .map(x -> failureInformationPublicationChannelMapper.toFailureInformationPublicationChannelDto(x))
+                .collect(Collectors.toList());
+
+    }
+
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java
index 9a982b5..d01e87d 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java
@@ -103,6 +103,6 @@
 
     private List<UUID> stationIds;
 
-    private List<String> publicationChannels;
+    //private List<String> publicationChannels;
 
 }
diff --git a/gfsBackendService/src/main/resources/application.yml b/gfsBackendService/src/main/resources/application.yml
index 7c2e7c4..43020f3 100644
--- a/gfsBackendService/src/main/resources/application.yml
+++ b/gfsBackendService/src/main/resources/application.yml
@@ -212,6 +212,22 @@
 
 spring:
   profiles: devserver-branch
+  rabbitmq:
+    # Importkanal
+    importExchange: sitImportExchange_branch
+    importQueue: sitImportQueue_branch
+    importkey: sitImportExchange.failureImportKey
+
+    # Exportkanäle
+    exportExchange: sitExportExchange_branch
+    channels:
+      - name: Mail
+        exportQueue: sit_mail_export_queue_branch
+        exportKey: sit_mail_export_key
+        isMailType: true
+      - name: Störungsauskunft.de
+        exportQueue: sit_stoerungsauskunft_export_queue_branch
+        exportKey: sit_stoerungsauskunft_export_key
 
 logging:
   level:
diff --git a/gfsBackendService/src/main/resources/db/migration/V0_34__CREATE_GFI_DB.sql b/gfsBackendService/src/main/resources/db/migration/V0_34__CREATE_GFI_DB.sql
index fde107a..08abc4e 100644
--- a/gfsBackendService/src/main/resources/db/migration/V0_34__CREATE_GFI_DB.sql
+++ b/gfsBackendService/src/main/resources/db/migration/V0_34__CREATE_GFI_DB.sql
@@ -50,6 +50,12 @@
 DROP TABLE IF EXISTS public.TBL_FAILURE_INFORMATION_DISTRIBUTION_GROUP CASCADE;
 DROP SEQUENCE IF EXISTS public.TBL_FAILURE_INFORMATION_DISTRIBUTION_GROUP_ID_SEQ;
 
+DROP TABLE IF EXISTS public.TBL_FAILURE_INFORMATION_STATION CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_FAILURE_INFORMATION_STATION_ID_SEQ;
+
+DROP TABLE IF EXISTS public.TBL_FAILURE_INFORMATION_REMINDER_MAIL_SENT CASCADE;
+DROP SEQUENCE IF EXISTS public.TBL_FAILURE_INFORMATION_REMINDER_MAIL_SENT_ID_SEQ;
+
 DROP TABLE IF EXISTS public.TBL_FAILURE_INFORMATION_PUBLICATION_CHANNEL;
 DROP SEQUENCE IF EXISTS public.TBL_FAILURE_INFORMATION_PUBLICATION_CHANNEL_SEQ;
 
@@ -393,7 +399,7 @@
 Ihre Admin-Meister-Team der PTA GmbH');
 
 INSERT INTO public.tbl_distribution_group(UUID, NAME, DISTRIBUTION_TEXT)
-VALUES('5f502046-887a-11ea-bc55-0242ac130003', 'Verteiler fachlich - intern', 'Subject: Die Meldung $Title$ mit Beginn: $FailureBegin$ wurde in den Status veröffentlicht geändert.
+VALUES('5f502046-887a-11ea-bc55-0242ac130003', 'Verteiler fachlich - intern', 'Subject: Die Störmeldung mit Beginn: $Störungsbeginn_gemeldet$ und dem Voraussichtlicher Grund: $Voraussichtlicher_Grund$" wurde in den Status veröffentlicht geändert.
 
 Body:
 Verteiler fachlich TEST
@@ -493,6 +499,68 @@
 INSERT INTO public.tbl_failure_information_distribution_group(FK_TBL_FAILURE_INFORMATION, FK_TBL_DISTRIBUTION_GROUP)
 VALUES(2, 2);
 
+-- ---------------------------------------------
+-- TABLE TBL_FAILURE_INFORMATION_STATION
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_failure_information_station_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_failure_information_station_id_seq
+  OWNER TO gfi_service;
+
+CREATE TABLE public.tbl_failure_information_station
+(
+  id integer NOT NULL DEFAULT nextval('tbl_failure_information_station_id_seq'::regclass),
+  fk_tbl_failure_information integer NOT NULL,
+  station_station_id character varying(30) NOT NULL,
+  CONSTRAINT tbl_failure_information_station_pkey PRIMARY KEY (id),
+  CONSTRAINT tbl_fail_inf_station__failure_information_id_fkey FOREIGN KEY (fk_tbl_failure_information)
+      REFERENCES public.tbl_failure_information (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_failure_information_station
+  OWNER TO gfi_service;
+GRANT ALL ON TABLE public.tbl_failure_information_station TO gfi_service;
+
+-- ---------------------------------------------
+-- TABLE TBL_FAILURE_INFORMATION_REMINDER_MAIL_SENT
+-- ---------------------------------------------
+CREATE SEQUENCE public.tbl_failure_information_reminder_mail_sent_id_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 1
+  CACHE 1;
+ALTER TABLE public.tbl_failure_information_reminder_mail_sent_id_seq
+  OWNER TO gfi_service;
+
+CREATE TABLE public.tbl_failure_information_reminder_mail_sent
+(
+  id integer NOT NULL DEFAULT nextval('tbl_failure_information_reminder_mail_sent_id_seq'::regclass),
+  fk_tbl_failure_information integer NOT NULL,
+  mail_sent BOOLEAN NOT NULL,
+  date_mail_sent TIMESTAMP NOT NULL,
+  CONSTRAINT tbl_failure_information_reminder_mail_sent_pkey PRIMARY KEY (id),
+  CONSTRAINT tbl_fail_inf_reminder_mail_sent__failure_information_id_fkey FOREIGN KEY (fk_tbl_failure_information)
+      REFERENCES public.tbl_failure_information (id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE NO ACTION
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE public.tbl_failure_information_reminder_mail_sent
+  OWNER TO gfi_service;
+GRANT ALL ON TABLE public.tbl_failure_information_reminder_mail_sent TO gfi_service;
+
+INSERT INTO public.tbl_failure_information_reminder_mail_sent(FK_TBL_FAILURE_INFORMATION, MAIL_SENT, DATE_MAIL_SENT)
+VALUES(1, true, '2020-05-31 23:30:00');
+
 
 -- ---------------------------------------------
 -- TABLE TBL_FAILURE_INFORMATION_PUBLICATION_CHANNEL
@@ -527,9 +595,6 @@
 INSERT INTO public.tbl_failure_information_publication_channel(FK_TBL_FAILURE_INFORMATION, PUBLICATION_CHANNEL, PUBLISHED)
 VALUES(1, 'MAIL', false);
 
-
-
-
 -- ----------------------------------------------------------------------------
 -- ----------------------------------------------------------------------------
 -- HISTORY-TABLES
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/DecideFailureInfoPublishedTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/DecideFailureInfoPublishedTest.java
new file mode 100644
index 0000000..3fe3eb5
--- /dev/null
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/DecideFailureInfoPublishedTest.java
@@ -0,0 +1,28 @@
+package org.eclipse.openk.gridfailureinformation.bpmn.impl;
+
+import org.eclipse.openk.gridfailureinformation.bpmn.base.ProcessException;
+import org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks.DecideFailureInfoPublished;
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
+import org.eclipse.openk.gridfailureinformation.support.MockDataHelper;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class DecideFailureInfoPublishedTest {
+
+
+    @Test
+    public void shouldDecideCorrectly() throws ProcessException {
+        FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
+        fiDto.setPublicationStatus(Constants.PUB_STATUS_VEROEFFENTLICHT);
+        GfiProcessSubject sub = GfiProcessSubject.of(fiDto, null);
+        DecisionTask dtask = new DecideFailureInfoPublished();
+        assertEquals(DecisionTask.OutputPort.YES, dtask.decide(sub));
+
+        sub.getFailureInformationDto().setPublicationStatus(Constants.PUB_STATUS_UNVEROEFFENTLICHT);
+        assertEquals(DecisionTask.OutputPort.NO, dtask.decide(sub));
+    }
+
+}
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java
index 9cb2b55..31955c3 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/controller/FailureInformationControllerTest.java
@@ -163,7 +163,6 @@
                 .andExpect(jsonPath("$.failureClassification", is(failureInfoDto.getFailureClassification())))
                 .andExpect(jsonPath("$.failureTypeId", is(failureInfoDto.getFailureTypeId().toString())))
                 .andExpect(jsonPath("$.statusInternId", is(failureInfoDto.getStatusInternId().toString())))
-//                .andExpect(jsonPath("$.statusExternId", is(failureInfoDto.getStatusExternId().toString())))
                 .andExpect(jsonPath("$.branchId", is(failureInfoDto.getBranchId().toString())))
                 .andExpect(jsonPath("$.branch", is(failureInfoDto.getBranch())))
                 .andExpect(jsonPath("$.branchColorCode", is(failureInfoDto.getBranchColorCode())))
@@ -226,4 +225,15 @@
                 .andExpect(content().contentType(MediaType.APPLICATION_JSON));
     }
 
+    @Test
+    public void shouldFindChannelsByFailureUuid() throws Exception{
+
+        List<FailureInformationPublicationChannelDto> fipChannelList = MockDataHelper.mockFailureInformationPublicationChanneDtolList();
+        when (failureInformationService.getPublicationChannelsForFailureInfo(any(UUID.class))).thenReturn(fipChannelList);
+
+        mockMvc.perform(get("/grid-failure-informations/{uuid}/channels", UUID.randomUUID().toString()))
+                .andExpect(status().is2xxSuccessful())
+                .andExpect(content().contentType(MediaType.APPLICATION_JSON));
+    }
+
 }
\ No newline at end of file
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
index 96d3550..1d24422 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
@@ -17,6 +17,7 @@
 import lombok.extern.log4j.Log4j2;
 import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState;
 import org.eclipse.openk.gridfailureinformation.config.TestConfiguration;
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
 import org.eclipse.openk.gridfailureinformation.exceptions.BadRequestException;
 import org.eclipse.openk.gridfailureinformation.exceptions.NotFoundException;
 import org.eclipse.openk.gridfailureinformation.exceptions.OperationDeniedException;
@@ -238,62 +239,6 @@
     }
 
     @Test
-    public void shouldUpdateFailureInformation_updateChannels1() {
-
-        FailureInformationDto fiDto =  MockDataHelper.mockFailureInformationDto();
-        LinkedList<String> channelList = new LinkedList<String>();
-        channelList.add("MOCKXX"); //neuer Channel entspricht keinem bereits existierendem Channel
-        channelList.add("MOCKYY"); //neuer Channel entspricht keinem bereits existierendem Channel
-        fiDto.setPublicationChannels(channelList);
-
-        TblFailureInformation tblFi = MockDataHelper.mockTblFailureInformation();
-        TblFailureInformation existingTblFi = MockDataHelper.mockTblFailureInformation();
-
-        TblFailureInformationPublicationChannel tblFailureInformationPublicationChannel1 = MockDataHelper.mockTblFailureInformationPublicationChannel();
-        TblFailureInformationPublicationChannel tblFailureInformationPublicationChannel2 = MockDataHelper.mockTblFailureInformationPublicationChannel2();
-
-        Set<TblFailureInformationPublicationChannel> rmqChannels = new HashSet<>();
-        rmqChannels.add(tblFailureInformationPublicationChannel1);
-        rmqChannels.add(tblFailureInformationPublicationChannel2);
-        existingTblFi.setPublicationChannelList(rmqChannels);
-
-        when( failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(existingTblFi));
-
-        failureInformationService.updatePublicationChannels(fiDto, tblFi);
-
-        assertEquals(4, tblFi.getPublicationChannelList().size()); //zu den zwei bereits existierenden Channels kommen zwei weitere hinzu
-
-    }
-
-    @Test
-    public void shouldUpdateFailureInformation_updateChannels2() {
-
-        FailureInformationDto fiDto =  MockDataHelper.mockFailureInformationDto();
-        LinkedList<String> channelList = new LinkedList<String>();
-        channelList.add("MOCKMAIL"); // neuer Channel entspricht einem bereits existierendem Channel
-        channelList.add("MOCKSMS"); // neuer Channel entspricht einem bereits existierendem Channel
-        fiDto.setPublicationChannels(channelList);
-
-        TblFailureInformation tblFi = MockDataHelper.mockTblFailureInformation();
-        TblFailureInformation existingTblFi = MockDataHelper.mockTblFailureInformation();
-
-        TblFailureInformationPublicationChannel tblFailureInformationPublicationChannel1 = MockDataHelper.mockTblFailureInformationPublicationChannel();
-        TblFailureInformationPublicationChannel tblFailureInformationPublicationChannel2 = MockDataHelper.mockTblFailureInformationPublicationChannel2();
-
-        Set<TblFailureInformationPublicationChannel> rmqChannels = new HashSet<>();
-        rmqChannels.add(tblFailureInformationPublicationChannel1);
-        rmqChannels.add(tblFailureInformationPublicationChannel2);
-        existingTblFi.setPublicationChannelList(rmqChannels);
-
-        when( failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(existingTblFi));
-
-        failureInformationService.updatePublicationChannels(fiDto, tblFi);
-
-        assertEquals(2, tblFi.getPublicationChannelList().size()); //es bleibt bei den bereits existierenden 2 Channels
-
-    }
-
-    @Test
     public void shouldNotStoreFailureInformation_Exception_FailureInformationNotFound() {
         FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
         RefFailureClassification refFailureClassification = MockDataHelper.mockRefFailureClassification();
@@ -314,7 +259,6 @@
                 });
 
         assertThrows(NotFoundException.class, () -> failureInformationService.storeFailureInfo(fiDto, GfiProcessState.NEW));
-
     }
 
     @Test
@@ -615,7 +559,6 @@
         try {
             java.util.Date date1 = dateformat.parse("01/01/2020");
             java.util.Date date2 = dateformat.parse("24/12/2024");
-            //java.util.Date date3 = dateformat.parse("02/09/2022");
 
             // set first startdate and last enddate
             tblFailureInformation1.setFailureBegin(date1);
@@ -624,8 +567,6 @@
 
         }
 
-
-
         List<TblFailureInformation> listFailureInfos = new ArrayList();
         listFailureInfos.add(tblFailureInformation1);
         listFailureInfos.add(tblFailureInformation2);
@@ -675,7 +616,6 @@
         assertEquals( fiDtoList.size(), fiMockList.size() );
         assertEquals( fiDtoList.get(0).getResponsibility(), fiMockList .get(0).getResponsibility());
 
-
     }
 
     @Test
@@ -766,4 +706,20 @@
         Mockito.verify(failureInformationPublicationChannelRepository, times(1)).delete( tblChannel );
     }
 
+    @Test
+    public void shouldReturnFailureInfoPublicationChannels(){
+
+        TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
+        List<TblFailureInformationPublicationChannel> fipChannelList =  MockDataHelper.mockTblFailureInformationPublicationChannelList();
+
+        when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation));
+        when(failureInformationPublicationChannelRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(fipChannelList);
+
+        List<FailureInformationPublicationChannelDto> fipChannelDtoList = failureInformationService.getPublicationChannelsForFailureInfo(UUID.randomUUID());
+
+        assertEquals( fipChannelDtoList.size(), fipChannelList.size() );
+        assertEquals( fipChannelDtoList.get(0).getPublicationChannel(), fipChannelList .get(0).getPublicationChannel());
+
+    }
+
 }
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
index 2956b45..cf2e258 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
@@ -1328,6 +1328,14 @@
         return fipChannelDto;
     }
 
+    public static FailureInformationPublicationChannelDto mockFailureInformationPublicationChannelDto2(){
+        FailureInformationPublicationChannelDto fipChannelDto = new FailureInformationPublicationChannelDto();
+        fipChannelDto.setFailureInformationId(UUID.randomUUID());
+        fipChannelDto.setPublicationChannel("MOCKCHANNEL");
+        fipChannelDto.setPublished(true);
+        return fipChannelDto;
+    }
+
     public static List<TblFailureInformationPublicationChannel> mockTblFailureInformationPublicationChannelList(){
         List<TblFailureInformationPublicationChannel> channelList = new LinkedList<>();
         channelList.add(mockTblFailureInformationPublicationChannel());
@@ -1336,6 +1344,16 @@
         return channelList;
     }
 
+    public static List<FailureInformationPublicationChannelDto> mockFailureInformationPublicationChanneDtolList(){
+        List<FailureInformationPublicationChannelDto> channelList = new LinkedList<>();
+        channelList.add(mockFailureInformationPublicationChannelDto());
+        channelList.add(mockFailureInformationPublicationChannelDto2());
+
+        return channelList;
+    }
+
+
+
     public static List<ArrayList<BigDecimal>> mockPolygonCoordinatesList(){
 
         List<ArrayList<BigDecimal>> cordinatesList = new LinkedList<>();
diff --git a/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/config/SwaggerConfig.java b/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/config/SwaggerConfig.java
index 37a467a..ee6b295 100644
--- a/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/config/SwaggerConfig.java
+++ b/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/config/SwaggerConfig.java
@@ -15,7 +15,7 @@
 @Log4j2
 @Configuration
 @EnableSwagger2
-@Profile("!prod")
+@Profile({"!test","!prod"})
 public class SwaggerConfig {
 
     @Value("${swagger.baseUrl}")
diff --git a/stoerungsauskunftInterface/pom.xml b/stoerungsauskunftInterface/pom.xml
index 2cb49a1..a29835f 100644
--- a/stoerungsauskunftInterface/pom.xml
+++ b/stoerungsauskunftInterface/pom.xml
@@ -43,6 +43,14 @@
 	</properties>
 
 	<dependencies>
+		<!-- https://mvnrepository.com/artifact/org.springframework.amqp/spring-rabbit-test -->
+		<dependency>
+			<groupId>org.springframework.amqp</groupId>
+			<artifactId>spring-rabbit-test</artifactId>
+			<version>2.2.7.RELEASE</version>
+			<scope>test</scope>
+		</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-web</artifactId>
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/StoerungsaulkunftInterfaceApplication.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/StoerungsauskunftInterfaceApplication.java
similarity index 75%
rename from stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/StoerungsaulkunftInterfaceApplication.java
rename to stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/StoerungsauskunftInterfaceApplication.java
index 02f6814..0a95ee3 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/StoerungsaulkunftInterfaceApplication.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/StoerungsauskunftInterfaceApplication.java
@@ -6,10 +6,10 @@
 
 @SpringBootApplication
 @EnableFeignClients
-public class StoerungsaulkunftInterfaceApplication {
+public class StoerungsauskunftInterfaceApplication {
 
 	public static void main(String[] args) {
-		SpringApplication.run(StoerungsaulkunftInterfaceApplication.class);
+		SpringApplication.run(StoerungsauskunftInterfaceApplication.class);
 	}
 
 }
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/SwaggerConfig.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/SwaggerConfig.java
index 085d1a2..7792780 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/SwaggerConfig.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/SwaggerConfig.java
@@ -15,12 +15,12 @@
 @Log4j2
 @Configuration
 @EnableSwagger2
-@Profile("!prod")
+@Profile({"!test","!prod"})
 public class SwaggerConfig {
 
-    @Value("${swagger.baseUrl}")
+    @Value("${swagger.baseUrl:}")
     public String baseUrl;
-    @Value("${swagger.proxyUrl}")
+    @Value("${swagger.proxyUrl:}")
     public String proxyUrl;
 
     @Bean
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/constants/Constants.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/constants/Constants.java
index 8cd09fb..ae634f5 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/constants/Constants.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/constants/Constants.java
@@ -19,6 +19,7 @@
     public static final String SRC_STOERUNGSAUSKUNFT_DE = "stoerungsauskunft.de";
 
     public static final String BRANCH_ELECTRICITY = "S";
+    public static final String VOLTAGE_LVL_LOW = "NS";
 
     public static final String PLANNED_OUTAGE = "planned";
     public static final String UNPLANNED_OUTAGE = "unplanned";
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/StoerungsauskunftUserNotification.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/StoerungsauskunftUserNotification.java
index 4db2c54..c9cf7fb 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/StoerungsauskunftUserNotification.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/StoerungsauskunftUserNotification.java
@@ -17,7 +17,6 @@
     private String houseNo;
     private String district;
     private String ags;
-    private Integer radius;
     private String lat;
     private String lng;
     private String comment;
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/mapper/StoerungsauskunftMapper.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/mapper/StoerungsauskunftMapper.java
index 3463cbb..197b789 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/mapper/StoerungsauskunftMapper.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/mapper/StoerungsauskunftMapper.java
@@ -14,6 +14,7 @@
  */
 package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.mapper;
 
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.constants.Constants;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.*;
 import org.mapstruct.*;
 
@@ -33,7 +34,6 @@
             @Mapping(target = "failureBegin", source = "date", dateFormat = "dd.MM.yyyy HH:mm:ss"),
             @Mapping(target = "longitude", source = "lng"),
             @Mapping(target = "latitude", source = "lat"),
-            @Mapping(target = "radiusInMeters", source = "radius", defaultValue = "0"),
             @Mapping(target = "street", source = "street", qualifiedByName = "streetMapperToForeignFailureDataDto"),
             @Mapping(target = "housenumber", source = "houseNo"),
     })
@@ -41,10 +41,12 @@
 
 
     @AfterMapping
-    default void setStreetAndHouseNumber(StoerungsauskunftUserNotification srcEntity, @MappingTarget ForeignFailureDataDto targetEntity){
+    default void afterMappingProcess(StoerungsauskunftUserNotification srcEntity, @MappingTarget ForeignFailureDataDto targetEntity){
         if (targetEntity.getHousenumber() == null || targetEntity.getHousenumber().isEmpty()){
             targetEntity.setHousenumber(housenumberMapperToForeignFailureDataDto(srcEntity.getStreet()));
         }
+        targetEntity.setRadiusInMeters(0L);
+        targetEntity.setVoltageLevel(Constants.VOLTAGE_LVL_LOW);
     }
 
     @Named("streetMapperToForeignFailureDataDto")
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/MessageConsumer.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/MessageConsumerService.java
similarity index 92%
rename from stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/MessageConsumer.java
rename to stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/MessageConsumerService.java
index d982fa0..668e1d8 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/MessageConsumer.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/MessageConsumerService.java
@@ -1,4 +1,4 @@
-package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.controller;
+package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.service;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -10,10 +10,11 @@
 import org.springframework.amqp.support.converter.SimpleMessageConverter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
 
 @Log4j2
-@Component
-public class MessageConsumer {
+@Service
+public class MessageConsumerService {
 
     @Autowired
     ObjectMapper objectMapper;
@@ -36,6 +37,5 @@
         String messagePayload = (String) converter.fromMessage(message);
         RabbitMqMessageDto rabbitMqMessageDto = objectMapper.readValue(messagePayload, RabbitMqMessageDto.class);
         importExportService.exportStoerungsauskunftOutage(rabbitMqMessageDto);
-
     }
 }
diff --git a/stoerungsauskunftInterface/src/main/resources/application.yml b/stoerungsauskunftInterface/src/main/resources/application.yml
index 03f0bcd..2ab88a7 100644
--- a/stoerungsauskunftInterface/src/main/resources/application.yml
+++ b/stoerungsauskunftInterface/src/main/resources/application.yml
@@ -68,10 +68,6 @@
     enabled: false
     cron: 0 */15 * ? * *
 
-swagger:
-  baseUrl:
-  proxyUrl:
-
 ---
 
 spring:
@@ -136,6 +132,27 @@
 ---
 
 spring:
+  profiles: devserver-branch
+  rabbitmq:
+    # Importkanal
+    importExchange: sitImportExchange_branch
+    importQueue: sitImportQueue_branch
+    importkey: sitImportExchange.failureImportKey
+
+    # Exportkanäle
+    exportExchange: sitExportExchange_branch
+    channels:
+      - name: Mail
+        exportQueue: sit_mail_export_queue_branch
+        exportKey: sit_mail_export_key
+        isMailType: true
+      - name: Störungsauskunft.de
+        exportQueue: sit_stoerungsauskunft_export_queue_branch
+        exportKey: sit_stoerungsauskunft_export_key
+
+---
+
+spring:
   profiles: qserver
   rabbitmq:
     host: entdockergss
@@ -175,5 +192,4 @@
   corsEnabled: true
 
 swagger:
-  baseUrl: /test-stoerungsauskunft-interface
-  proxyUrl:
\ No newline at end of file
+  baseUrl: /test-stoerungsauskunft-interface
\ No newline at end of file
diff --git a/stoerungsauskunftInterface/src/main/resources/application_localdev.yml b/stoerungsauskunftInterface/src/main/resources/application_localdev.yml
index e9c0025..1c04bd5 100644
--- a/stoerungsauskunftInterface/src/main/resources/application_localdev.yml
+++ b/stoerungsauskunftInterface/src/main/resources/application_localdev.yml
@@ -81,9 +81,6 @@
     enabled: false
     cron: 0 */15 * ? * *
 
-swagger:
-  baseUrl:
-  proxyUrl:
 ---
 
 spring:
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/ImportSchedulerConfigTest.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/ImportSchedulerConfigTest.java
index 116646e..259d866 100644
--- a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/ImportSchedulerConfigTest.java
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/ImportSchedulerConfigTest.java
@@ -1,23 +1,24 @@
 package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.config;
 
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsaulkunftInterfaceApplication;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsauskunftInterfaceApplication;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.api.StoerungsauskunftApi;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.service.ImportExportService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.boot.test.mock.mockito.SpyBean;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.ContextConfiguration;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
-@SpringBootTest(classes = StoerungsaulkunftInterfaceApplication.class)
+@SpringBootTest(classes = StoerungsauskunftInterfaceApplication.class)
 @ContextConfiguration(classes = {TestConfiguration.class})
 @ActiveProfiles("test")
 public class ImportSchedulerConfigTest {
 
-    @Qualifier("myImportService")
-    @Autowired
+    @SpyBean
     private ImportExportService importExportService;
 
     @MockBean
@@ -29,7 +30,6 @@
     @Test
     public void shoulImportUserNotification() {
         importSchedulerConfig.scheduleTaskImportUserNotifications();
-        //Todo kann ImportExportService nicht "mocken" (@Spybean vs @MockBean)
-        //verify(myImportService, times(1)).importUserNotifications();
+        verify(importExportService, times(1)).importUserNotifications();
     }
 }
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/TestConfiguration.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/TestConfiguration.java
index 88e6aab..4cd962c 100644
--- a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/TestConfiguration.java
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/config/TestConfiguration.java
@@ -16,11 +16,14 @@
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsaulkunftInterfaceApplication;
+import com.rabbitmq.client.Channel;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsauskunftInterfaceApplication;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.config.rabbitMq.RabbitMqConfig;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.mapper.StoerungsauskunftMapperImpl;
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.service.ImportExportService;
-import org.mockito.Mockito;
+import org.springframework.amqp.rabbit.annotation.EnableRabbit;
+import org.springframework.amqp.rabbit.connection.Connection;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.test.TestRabbitTemplate;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer;
@@ -29,31 +32,51 @@
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.TestPropertySource;
 
-import static org.mockito.Mockito.doNothing;
+import java.io.IOException;
 
-@EntityScan(basePackageClasses = StoerungsaulkunftInterfaceApplication.class)
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.BDDMockito.willReturn;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.mock;
+
+@EntityScan(basePackageClasses = StoerungsauskunftInterfaceApplication.class)
 @ContextConfiguration( initializers = {ConfigFileApplicationContextInitializer.class})
 @TestPropertySource("spring.config.location=classpath:application.yml")
+@EnableRabbit
 public class TestConfiguration {
 
     @Bean
     ObjectMapper objectMapper() { return new ObjectMapper(); }
 
     @Bean
-    public ImportExportService myImportService() {return new ImportExportService();}
-
-    @Bean
     public StoerungsauskunftMapperImpl stoerungsauskunftMapper() {return new StoerungsauskunftMapperImpl();}
 
     @Bean
-    public MessageChannel failureImportChannel() {return Mockito.mock(MessageChannel.class);}
+    public MessageChannel failureImportChannel() {return mock(MessageChannel.class);}
 
     @Bean
     @Qualifier("rabbitMqConfig")
     public RabbitMqConfig rabbitMqConfig() {
-        RabbitMqConfig rabbitMqConfigMock = Mockito.mock(RabbitMqConfig.class);
+        RabbitMqConfig rabbitMqConfigMock = mock(RabbitMqConfig.class);
         doNothing().when(rabbitMqConfigMock).buildAllQueues();
         return rabbitMqConfigMock;
     }
 
+    @Bean
+    public TestRabbitTemplate template() throws IOException {
+        return new TestRabbitTemplate(connectionFactory());
+    }
+
+    @Bean
+    public ConnectionFactory connectionFactory() throws IOException {
+        ConnectionFactory factory = mock(ConnectionFactory.class);
+        Connection connection = mock(Connection.class);
+        Channel channel = mock(Channel.class);
+        willReturn(connection).given(factory).createConnection();
+        willReturn(channel).given(connection).createChannel(anyBoolean());
+        given(channel.isOpen()).willReturn(true);
+        return factory;
+    }
+
 }
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/ImportExportControllerTest.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/ImportExportControllerTest.java
index 33e90c4..02b4b52 100644
--- a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/ImportExportControllerTest.java
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/controller/ImportExportControllerTest.java
@@ -15,9 +15,8 @@
 package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.controller;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsaulkunftInterfaceApplication;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsauskunftInterfaceApplication;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.api.StoerungsauskunftApi;
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.ForeignFailureMessageDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.RabbitMqMessageDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.service.ImportExportService;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.support.MockDataHelper;
@@ -36,7 +35,7 @@
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
-@SpringBootTest(classes = StoerungsaulkunftInterfaceApplication.class)
+@SpringBootTest(classes = StoerungsauskunftInterfaceApplication.class)
 @AutoConfigureMockMvc
 @ActiveProfiles("test")
 public class ImportExportControllerTest {
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java
index 6f53c75..8d938dd 100644
--- a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java
@@ -18,10 +18,9 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import feign.Request;
 import feign.Response;
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsaulkunftInterfaceApplication;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsauskunftInterfaceApplication;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.api.StoerungsauskunftApi;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.config.TestConfiguration;
-import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.FailureInformationDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.ForeignFailureMessageDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.RabbitMqMessageDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.StoerungsauskunftUserNotification;
@@ -29,7 +28,6 @@
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.support.MockDataHelper;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.core.io.ClassPathResource;
@@ -40,18 +38,18 @@
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.*;
 
-@SpringBootTest(classes = StoerungsaulkunftInterfaceApplication.class)
+@SpringBootTest(classes = StoerungsauskunftInterfaceApplication.class)
 @ContextConfiguration(classes = {TestConfiguration.class})
 @ActiveProfiles("test")
 public class ImportExportServiceTest {
 
-    @Qualifier("myImportService")
     @Autowired
     private ImportExportService importExportService;
 
@@ -105,6 +103,21 @@
     }
 
     @Test
+    public void shouldExportForeignFailureMessageDto_planned_polygons_empty() throws ParseException {
+        RabbitMqMessageDto rabbitMqMessageDto = MockDataHelper.mockRabbitMqMessageDto();
+
+        rabbitMqMessageDto.getFailureInformationDto().setPlanned(true);
+        rabbitMqMessageDto.getFailureInformationDto().setAddressPolygonPoints(new ArrayList<>());
+
+        Request request = mock(Request.class);
+        Response mockResponse = Response.builder().status(200).request(request).body("Test", StandardCharsets.UTF_8).build();
+
+        when(stoerungsauskunftApi.postOutage(any())).thenReturn(mockResponse);
+        importExportService.exportStoerungsauskunftOutage(rabbitMqMessageDto);
+        verify(stoerungsauskunftApi, times(1)).postOutage(anyList());
+    }
+
+    @Test
     public void shouldThrowErrorWhenCallToExternalInterfacefailed() throws ParseException {
         RabbitMqMessageDto rabbitMqMessageDto = MockDataHelper.mockRabbitMqMessageDto();
 
@@ -116,5 +129,21 @@
 
     }
 
+    @Test
+    public void shoulImportUserNotificationMapperTest1() throws IOException {
+
+        ImportExportService importExportServicSpy = spy(importExportService);
+
+        InputStream is = new ClassPathResource("UsernotificationJsonResponse.json").getInputStream();
+        List<StoerungsauskunftUserNotification> userNotificationList =
+                objectMapper.readValue(is, new TypeReference<List<StoerungsauskunftUserNotification>>() {
+                });
+        when(stoerungsauskunftApi.getUserNotification(any(Integer.class))).thenReturn(userNotificationList);
+
+        importExportServicSpy.importUserNotifications();
+
+        verify(importExportServicSpy, times(userNotificationList.size())).pushForeignFailure(any(ForeignFailureMessageDto.class));
+    }
+
 
 }
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/MessageConsumerServiceTest.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/MessageConsumerServiceTest.java
new file mode 100644
index 0000000..17d894b
--- /dev/null
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/MessageConsumerServiceTest.java
@@ -0,0 +1,85 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.service;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.StoerungsauskunftInterfaceApplication;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.api.StoerungsauskunftApi;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.config.TestConfiguration;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.RabbitMqMessageDto;
+import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.support.MockDataHelper;
+import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.test.RabbitListenerTest;
+import org.springframework.amqp.rabbit.test.RabbitListenerTestHarness;
+import org.springframework.amqp.rabbit.test.TestRabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.boot.test.mock.mockito.SpyBean;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+
+import java.text.ParseException;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+@SpringBootTest(classes = StoerungsauskunftInterfaceApplication.class)
+@ContextConfiguration(classes = {TestConfiguration.class})
+@ActiveProfiles("test")
+@RabbitListenerTest
+public class MessageConsumerServiceTest {
+
+    @Autowired
+    private RabbitListenerTestHarness harness;
+
+    @SpyBean
+    private ImportExportService importExportService;
+
+    @Autowired
+    ObjectMapper objectMapper;
+
+    @MockBean
+    StoerungsauskunftApi stoerungsauskunftApi;
+
+    @Autowired
+    private TestRabbitTemplate testRabbitTemplate;
+
+    @Value("${spring.rabbitmq.exportQueue}")
+    private String exportQueue;
+
+    @Test
+    public void shouldExportForeignFailureMessageDto() throws JsonProcessingException {
+
+        RabbitMqMessageDto rabbitMqMessageDto = MockDataHelper.mockRabbitMqMessageDto();
+        String rabbitMqMessageDtoString = objectMapper.writeValueAsString(rabbitMqMessageDto);
+
+        testRabbitTemplate.convertAndSend(exportQueue, rabbitMqMessageDtoString);
+
+        verify(importExportService, times(1)).exportStoerungsauskunftOutage(any());
+    }
+
+    @Test
+    public void shouldIgnoreButLogInputError() throws ParseException {
+        testRabbitTemplate.convertAndSend(exportQueue, "false input");
+        verify(importExportService, times(0)).exportStoerungsauskunftOutage(any());
+    }
+
+
+}
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/support/MockDataHelper.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/support/MockDataHelper.java
index 3a2a7c9..2de3b74 100644
--- a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/support/MockDataHelper.java
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/support/MockDataHelper.java
@@ -14,11 +14,13 @@
  */
 package org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.support;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.constants.Constants;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.FailureInformationDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.ForeignFailureDataDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.ForeignFailureMessageDto;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.dtos.RabbitMqMessageDto;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.math.BigDecimal;
 import java.sql.Date;
diff --git a/stoerungsauskunftInterface/src/test/resources/UsernotificationJsonResponse.json b/stoerungsauskunftInterface/src/test/resources/UsernotificationJsonResponse.json
index 12b4250..fb469bf 100644
--- a/stoerungsauskunftInterface/src/test/resources/UsernotificationJsonResponse.json
+++ b/stoerungsauskunftInterface/src/test/resources/UsernotificationJsonResponse.json
@@ -19,12 +19,51 @@
     "city": "Flonheim",
     "ags": null,
     "district": null,
-    "street": "Am Obertor 13",
+    "street": "Am Obertor",
     "lat": "49.8031615",
     "lng": "8.1932478",
     "comment": "Zappenduster",
     "operatorOutageInArea": 0,
-    "houseNo": "12"
-
+    "houseNo": "13"
+  },
+  {
+    "id": 23,
+    "date": "28.5.2020 14:49:11",
+    "postcode": "55237",
+    "city": "Flonheim",
+    "ags": null,
+    "district": null,
+    "lat": "49.8031615",
+    "lng": "8.1932478",
+    "comment": "Zappenduster",
+    "operatorOutageInArea": 0
+  },
+  {
+    "id": 23,
+    "date": "28.5.2020 14:49:11",
+    "postcode": "55237",
+    "city": "Flonheim",
+    "ags": null,
+    "street": "",
+    "district": null,
+    "lat": "49.8031615",
+    "lng": "8.1932478",
+    "comment": "Zappenduster",
+    "operatorOutageInArea": 0,
+    "houseNo": ""
+  },
+  {
+    "id": 23,
+    "date": "28.5.2020 14:49:11",
+    "postcode": "55237",
+    "city": "Flonheim",
+    "ags": null,
+    "district": null,
+    "street": "Am Obertor",
+    "lat": "49.8031615",
+    "lng": "8.1932478",
+    "comment": "Zappenduster",
+    "phone": "01520123456",
+    "operatorOutageInArea": 0
   }
 ]
\ No newline at end of file
diff --git a/stoerungsauskunftInterface/src/test/resources/application.yml b/stoerungsauskunftInterface/src/test/resources/application.yml
index 602e91b..843be83 100644
--- a/stoerungsauskunftInterface/src/test/resources/application.yml
+++ b/stoerungsauskunftInterface/src/test/resources/application.yml
@@ -57,10 +57,6 @@
     enabled: false
     cron: 0 */15 * ? * *
 
-swagger:
-  baseUrl:
-  proxyUrl:
-
 ---
 
 spring:
diff --git a/testImportGridFailures/src/main/java/org/eclipse/openk/gridfailureinformation/jobs/importgridfailures/config/SwaggerConfig.java b/testImportGridFailures/src/main/java/org/eclipse/openk/gridfailureinformation/jobs/importgridfailures/config/SwaggerConfig.java
index 0cd28b0..66eb015 100644
--- a/testImportGridFailures/src/main/java/org/eclipse/openk/gridfailureinformation/jobs/importgridfailures/config/SwaggerConfig.java
+++ b/testImportGridFailures/src/main/java/org/eclipse/openk/gridfailureinformation/jobs/importgridfailures/config/SwaggerConfig.java
@@ -16,7 +16,7 @@
 @Log4j2
 @Configuration
 @EnableSwagger2
-@Profile("!prod")
+@Profile({"!test","!prod"})
 public class SwaggerConfig {
 
     @Value("${swagger.baseUrl}")