diff --git a/i18n/general.de.json b/i18n/general.de.json
index 28d9b57..60f6767 100644
--- a/i18n/general.de.json
+++ b/i18n/general.de.json
@@ -30,6 +30,7 @@
   "Column": "Spalte",
   "MandatoryFieldsNotFilled": "Es ist mindestens ein Pflichtfeld nicht gefüllt.",
   "MandatoryMapFieldError": "Es muss ein Störungsort festgelegt werden.",
+  "MandatoryRadiusFieldError": "Es muss ein Radius festgelegt werden.",
   "SelectOption": "Bitte auswählen",
   "Search": "Suchen",
   "PublicationRequiresAtLeastOneChannel": "Zur Veröffentlichung der Störungsmeldung muss mindestens ein Veröffentlichungskanal ausgewählt sein.",
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
index c938513..504a3cb 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
@@ -258,7 +258,8 @@
                 formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.telecommunication &&
                 formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.gas &&
                 formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.districtHeating &&
-                formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water
+                formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water &&
+                formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.noBranch
               "
             >
               <label for="voltageLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.VoltageLevel' | translate }}</label>
@@ -285,7 +286,8 @@
                 formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.telecommunication &&
                 formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.power &&
                 formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.districtHeating &&
-                formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water
+                formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water &&
+                formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.noBranch
               "
             >
               <label for="pressureLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.PressureLevel' | translate }}</label>
@@ -662,7 +664,7 @@
         </app-expandable>
 
         <!-- publication: publication-channels and distribution-groups -->
-        <div *ngIf="gridFailureDetailsSandbox.checkForMaxVersion()">
+        <div *ngIf="gridFailureDetailsSandbox.checkForMaxVersion() && gridFailureDetailsSandbox.showForStatus()">
           <app-expandable [showBodyInitially]="true" *visibleByRight="[RolesEnum.PUBLISHER]">
             <label header>{{ 'GridFailure.Publication' | translate }}</label>
             <div class="expandable-content" body>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts
index 257d07c..5f9277e 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts
@@ -828,4 +828,22 @@
     service.setFormStatePristine();
     expect(dispatchSpy).toHaveBeenCalledTimes(1);
   });
+
+  it('should return true if status not completed or canceled', () => {
+    service.gridFailureDetailsFormState$ = of((INITIAL_STATE.value.statusIntern = StateEnum.CREATED) as any);
+    const res = service.showForStatus();
+    expect(res).toBeTruthy();
+  });
+
+  it('should return false if status completed', () => {
+    service.gridFailureDetailsFormState$ = of((INITIAL_STATE.value.statusIntern = StateEnum.COMPLETED) as any);
+    const res = service.showForStatus();
+    expect(res).toBeFalsy();
+  });
+
+  it('should return true if status canceled', () => {
+    service.gridFailureDetailsFormState$ = of((INITIAL_STATE.value.statusIntern = StateEnum.CANCELED) as any);
+    const res = service.showForStatus();
+    expect(res).toBeFalsy();
+  });
 });
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
index 3000e15..09180f0 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
@@ -50,6 +50,7 @@
 } from 'ngrx-forms';
 import { combineLatest, Observable } from 'rxjs';
 import { debounceTime, distinctUntilChanged, map, skipWhile, take, takeUntil, tap } from 'rxjs/operators';
+import { StateEnum } from '@grid-failure-information-app/shared/constants/enums';
 
 @Injectable()
 export class GridFailureDetailsSandbox extends BaseFormSandbox<models.GridFailure> {
@@ -383,10 +384,11 @@
           !districtControl.isValid ||
           !postcodeControl.isValid ||
           !streetControl.isValid ||
-          !housenumberControl.isValid ||
-          !radiusControl.isValid)
+          !housenumberControl.isValid)
       ) {
         this._utilService.displayNotification('MandatoryMapFieldError', 'alert');
+      } else if (allButGridFailureLocationAreValid && latControl.isValid && longControl.isValid && !radiusControl.isValid) {
+        this._utilService.displayNotification('MandatoryRadiusFieldError', 'alert');
       } else {
         this._utilService.displayNotification('MandatoryFieldError', 'alert');
       }
@@ -768,6 +770,10 @@
     return this.currentFormState.value.versionNumber === this.maxVersionNumber;
   }
 
+  public showForStatus(): boolean {
+    return this.currentFormState.value.statusIntern !== StateEnum.COMPLETED && this.currentFormState.value.statusIntern !== StateEnum.CANCELED;
+  }
+
   public createDistributionGroupAssignment(selectedDistributionGroup: models.DistributionGroup) {
     if (selectedDistributionGroup) {
       let testGroup: models.DistributionGroup = this._assignedDistributionGroups.find(group => group.id === selectedDistributionGroup.id);
diff --git a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts
index 5529e54..987fe74 100644
--- a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts
+++ b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts
@@ -15,7 +15,7 @@
 import { of } from 'rxjs/observable/of';
 import { FormState } from 'ngrx-forms';
 import { PermissionsModel } from '@grid-failure-information-app/shared/models/permissions.model';
-import { RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
+import { RolesEnum, StateEnum } from '@grid-failure-information-app/shared/constants/enums';
 
 describe('FormDisableDirective', () => {
   let directive: FormDisableDirective;
@@ -57,4 +57,31 @@
     directive.ngrxFormState = state;
     expect(dispatchSpy).toHaveBeenCalled();
   });
+
+  it('should disable from if user is publisher and status is qualified', () => {
+    let permission: PermissionsModel = new PermissionsModel([RolesEnum.PUBLISHER]);
+    directive['_permissions$'] = of(permission);
+    let state: FormState<any> = { isDisabled: false, value: { statusIntern: StateEnum.QUALIFIED } } as any;
+    let dispatchSpy = spyOn(directive['_appState$'], 'dispatch');
+    directive.ngrxFormState = state;
+    expect(dispatchSpy).toHaveBeenCalled();
+  });
+
+  it('should disable from if status is completed', () => {
+    let permission: PermissionsModel = new PermissionsModel([RolesEnum.ADMIN]);
+    directive['_permissions$'] = of(permission);
+    let state: FormState<any> = { isDisabled: false, value: { statusIntern: StateEnum.COMPLETED } } as any;
+    let dispatchSpy = spyOn(directive['_appState$'], 'dispatch');
+    directive.ngrxFormState = state;
+    expect(dispatchSpy).toHaveBeenCalled();
+  });
+
+  it('should disable from if status is canceled', () => {
+    let permission: PermissionsModel = new PermissionsModel([RolesEnum.ADMIN]);
+    directive['_permissions$'] = of(permission);
+    let state: FormState<any> = { isDisabled: false, value: { statusIntern: StateEnum.CANCELED } } as any;
+    let dispatchSpy = spyOn(directive['_appState$'], 'dispatch');
+    directive.ngrxFormState = state;
+    expect(dispatchSpy).toHaveBeenCalled();
+  });
 });
diff --git a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts
index 3025de3..410e112 100644
--- a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts
+++ b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts
@@ -39,7 +39,12 @@
       return;
     }
     this._permissions$.pipe(take(1), takeUntil(this._endSubscriptions$)).subscribe(permissions => {
-      if (!!permissions.reader || (!!permissions.publisher && formState.value.statusIntern === StateEnum.QUALIFIED)) {
+      if (
+        !!permissions.reader ||
+        (!!permissions.publisher && formState.value.statusIntern === StateEnum.QUALIFIED) ||
+        formState.value.statusIntern === StateEnum.COMPLETED ||
+        formState.value.statusIntern === StateEnum.CANCELED
+      ) {
         this._appState$.dispatch(new DisableAction(formState.id));
       }
     });
