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 17096d8..e34ab52 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
@@ -32,7 +32,7 @@
 public class GfiGrid extends ProcessGrid {
 
     public GfiGrid() throws ProcessException {
-        DecisionTask decidePlanned = new DecideFailureInfoPlanned();
+        DecisionTask<GfiProcessSubject> decidePlanned = new DecideFailureInfoPlanned();
 
         ProcessTask storeEditStatusPlanned = new ShortcutTask( PLANNED );
 
@@ -45,26 +45,26 @@
                 new UIStoreFailureInformationTask( "State CREATED UI Task", true));
         register( UPDATED, qualifyMessage);
 
-        DecisionTask decideCanceled = new DecideFailureInfoCanceled();
+        DecisionTask<GfiProcessSubject> decideCanceled = new DecideFailureInfoCanceled();
         ProcessTask storeEditStatusQualified = new ShortcutTask( QUALIFIED );
         ProcessTask storeEditStatusCanceled = new ShortcutTask( CANCELED );
 
         ProcessTask canceledEndpoint = register( CANCELED,
                 new UIStoreFailureInformationTask( "State CANCELED UI Task", true));
 
-        DecisionTask decidePublished = new DecideFailureInfoPublished();
+        DecisionTask<GfiProcessSubject> decidePublished = new DecideFailureInfoPublished();
         ProcessTask storePubStatusWithdrawnOnCancel = new StorePublishStatusTask(Constants.PUB_STATUS_ZURUECKGEZOGEN);
         ProcessTask publishMessage = register( QUALIFIED,
                 new UIStoreFailureInformationTask( "State QUALIFIED UI Task", true));
 
-        ProcessTask storeForceEditStatusQualified = register( CHECKED_FOR_PUBLISH_, new StoreEditStatusTask( QUALIFIED ) );
-        ProcessTask publishMessageToChannels = new PublishFailureToChannelsTask();
+        //ProcessTask storeForceEditStatusQualified = register( CHECKED_FOR_PUBLISH_, new StoreEditStatusTask( QUALIFIED ) );
+        ProcessTask publishMessageToChannels = register( CHECKED_FOR_PUBLISH_, new PublishFailureToChannelsTask());
         ProcessTask storePublicationStatusPublished = new StorePublishStatusTask(Constants.PUB_STATUS_VEROEFFENTLICHT);
         ProcessTask storePublicationStatusWithdrawn = new StorePublishStatusTask(Constants.PUB_STATUS_ZURUECKGEZOGEN);
-        DecisionTask decidePublishedOnComplete = new DecideFailureInfoPublished();
+        DecisionTask<GfiProcessSubject> decidePublishedOnComplete = new DecideFailureInfoPublished();
         ProcessTask updateMessage = new UIStoreFailureInformationTask( "State Updated UI Task", true);
 
-        DecisionTask decideUpdated = new DecideFailureInfoUpdated();
+        DecisionTask<GfiProcessSubject> decideUpdated = new DecideFailureInfoUpdated();
         ProcessTask storeEditStatusUpdated = new ShortcutTask( UPDATED );
         ProcessTask resetPublishedFlagOnChannels = new ResetPublishedFlagOnChannelsTask();
 
@@ -103,7 +103,7 @@
         decidePublished.connectOutputTo( NO, canceledEndpoint);
         storePubStatusWithdrawnOnCancel.connectOutputTo( canceledEndpoint );
 
-        storeForceEditStatusQualified.connectOutputTo(publishMessageToChannels);
+        //storeForceEditStatusQualified.connectOutputTo(publishMessageToChannels);
         publishMessageToChannels.connectOutputTo(storePublicationStatusPublished);
         storePublicationStatusPublished.connectOutputTo(updateMessage);
 
