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 6289873..182e502 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
@@ -56,6 +56,7 @@
         ProcessTask storePubStatusWithdrawnOnCancel = new StorePublishStatusTask(Constants.PUB_STATUS_ZURUECKGEZOGEN);
         ProcessTask publishMessage = register( QUALIFIED,
                 new UIStoreFailureInformationTask( "State QUALIFIED UI Task", true));
+        ProcessTask rePublishToMailChannelsQualifiedAfterUpdated = new RePublishFailureToMailChannelsTask(UPDATED);
 
         ProcessTask publishMessageToChannels = register( CHECKED_FOR_PUBLISH_, new PublishFailureToChannelsTask());
         ProcessTask storePublicationStatusPublished = new StorePublishStatusTask(Constants.PUB_STATUS_VEROEFFENTLICHT);
@@ -66,7 +67,6 @@
         DecisionTask<GfiProcessSubject> decideUpdated = new DecideFailureInfoUpdated();
         ProcessTask storeEditStatusUpdated = new ShortcutTask( UPDATED );
         ProcessTask resetPublishedFlagOnChannels = new ResetPublishedFlagOnChannelsTask();
-        ProcessTask rePublishToMailChannelsUpdated = new RePublishFailureToMailChannelsTask(UPDATED);
 
         DecisionTask<GfiProcessSubject> decideHasSubordinatedInfos = new DecideFailureInfoHasSubordinatedInfos();
         ProcessTask storeEditStatusOfParentForChildren = new StoreEditStatusOfParentToChildrenTask();
@@ -92,7 +92,9 @@
         decideCanceled.connectOutputTo( YES, storeEditStatusCanceled ); //Status nicht speichern da sonst doppelt, -> nächster Porzessschritt
         decideCanceled.connectOutputTo( NO, storeEditStatusQualified ); //Status nicht speichern da sonst doppelt, -> nächster Porzessschritt
 
-        storeEditStatusQualified.connectOutputTo(publishMessage);
+        //Benachrichtigungsemail bei Qualified nachdem aktualisiert wurde und nur wenn schon veröffentlicht
+        storeEditStatusQualified.connectOutputTo(rePublishToMailChannelsQualifiedAfterUpdated);
+        rePublishToMailChannelsQualifiedAfterUpdated.connectOutputTo(publishMessage);
         publishMessage.connectOutputTo(decideUpdated);
         decideUpdated.connectOutputTo(PORT1, storeEditStatusUpdated);
         decideUpdated.connectOutputTo(PORT2, setEndDate);
@@ -117,10 +119,7 @@
         storePublicationStatusPublished.connectOutputTo(updateMessage);
 
         storeEditStatusUpdated.connectOutputTo(resetPublishedFlagOnChannels);
-
-        //Benachrichtigungsemail bei Update
-        resetPublishedFlagOnChannels.connectOutputTo(rePublishToMailChannelsUpdated);
-        rePublishToMailChannelsUpdated.connectOutputTo(qualifyMessage);
+        resetPublishedFlagOnChannels.connectOutputTo(qualifyMessage);
 
     }
 
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/RePublishFailureToMailChannelsTask.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/RePublishFailureToMailChannelsTask.java
index 600424f..6b9fdcf 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/RePublishFailureToMailChannelsTask.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/RePublishFailureToMailChannelsTask.java
@@ -19,6 +19,7 @@
 import org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.ServiceTask;
 import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState;
 import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessSubject;
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
 
 @Log4j2
 public class RePublishFailureToMailChannelsTask extends ServiceTask<GfiProcessSubject> {
@@ -32,8 +33,9 @@
 
     @Override
     protected void onLeaveStep(GfiProcessSubject subject) {
-        subject.getProcessHelper().publishFailureInformation( subject.getFailureInformationDto(), true , processState );
-
+        if (Constants.PUB_STATUS_VEROEFFENTLICHT.equalsIgnoreCase(subject.getFailureInformationDto().getPublicationStatus())){
+            subject.getProcessHelper().publishFailureInformation( subject.getFailureInformationDto(), true , processState );
+        }
         log.debug("PublishFailureToChannelsTask onLeaveStep");
     }
 }
