diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
index f4dd4d29d01c5a55d6dcd4f8ab70f94b113db03f..3e774b915b884b1c140fd55ccccd542f7aeeb221 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
+++ b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
@@ -293,7 +293,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
       startDate: this.startDate.length ? this.startDate : null,
       endDate: this.endDate.length ? this.endDate : null
     };
-    this.topicCloudAdminService.setAdminData(this.topicCloudAdminData, true);
+    this.topicCloudAdminService.setAdminData(this.topicCloudAdminData, true, this.userRole);
   }
 
   setDefaultAdminData() {
diff --git a/src/app/components/shared/_dialogs/worker-dialog/worker-dialog-task.ts b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog-task.ts
index ae6f6f9c8e150a3ab4041e153f03215551890c77..b07cef2224808ff33b5cb51e2480c964eb6f0450 100644
--- a/src/app/components/shared/_dialogs/worker-dialog/worker-dialog-task.ts
+++ b/src/app/components/shared/_dialogs/worker-dialog/worker-dialog-task.ts
@@ -79,15 +79,14 @@ export class WorkerDialogTask {
 
   private finishSpacyCall(finishType: FinishType, index: number, tags?: SpacyKeyword[]): void {
     if (finishType === FinishType.completed) {
-      this.statistics.succeeded++;
       this.patchToServer(tags, index);
     } else if (finishType === FinishType.badSpelled) {
       this.statistics.badSpelled++;
       this.patchToServer([], index);
     } else {
       this.statistics.failed++;
+      this.callSpacy(index + concurrentCallsPerTask);
     }
-    this.callSpacy(index + concurrentCallsPerTask);
   }
 
   private patchToServer(tags: SpacyKeyword[], index: number) {
diff --git a/src/app/components/shared/tag-cloud/tag-cloud.component.ts b/src/app/components/shared/tag-cloud/tag-cloud.component.ts
index 90ef494e49ca4c0d40570ae3989eb3f6458c832a..1e81f07f2f99ccdbef7649cce6ff53dba2a97d1f 100644
--- a/src/app/components/shared/tag-cloud/tag-cloud.component.ts
+++ b/src/app/components/shared/tag-cloud/tag-cloud.component.ts
@@ -303,7 +303,7 @@ export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit, A
   ngAfterContentInit() {
     document.getElementById('footer_rescale').style.display = 'none';
     this._calcFont = window.getComputedStyle(document.getElementById('tagCloudComponent')).fontFamily;
-    this.dataManager.bindToRoom(this.roomId);
+    this.dataManager.bindToRoom(this.roomId, this.userRole);
     this.dataManager.updateDemoData(this.translateService);
     this.setCloudParameters(TagCloudComponent.getCurrentCloudParameters(), false);
   }
diff --git a/src/app/services/util/tag-cloud-data.service.ts b/src/app/services/util/tag-cloud-data.service.ts
index 0c9373b74b5f4d9dadbf09c8c1745cc3fa0c4056..f9f9c043ee0b8334b8b1c5f6df7c4daf70ba0f78 100644
--- a/src/app/services/util/tag-cloud-data.service.ts
+++ b/src/app/services/util/tag-cloud-data.service.ts
@@ -8,6 +8,7 @@ import { CloudParameters } from '../../components/shared/tag-cloud/tag-cloud.int
 import { Comment } from '../../models/comment';
 import { RoomDataService } from './room-data.service';
 import { SpacyKeyword } from '../http/spacy.service';
+import { UserRole } from '../../models/user-roles.enum';
 
 export interface TagCloudDataTagEntry {
   weight: number;
@@ -152,13 +153,13 @@ export class TagCloudDataService {
     ];
   }
 
-  bindToRoom(roomId: string): void {
+  bindToRoom(roomId: string, userRole: UserRole): void {
     this._currentFilter = CommentFilter.currentFilter;
     this._roomId = roomId;
     this._subscriptionAdminData = this._tagCloudAdmin.getAdminData.subscribe(adminData => {
       this.onReceiveAdminData(adminData, true);
     });
-    this._tagCloudAdmin.ensureRoomBound(roomId);
+    this._tagCloudAdmin.ensureRoomBound(roomId, userRole);
 
     this.fetchData();
     if (!this._currentFilter.paused) {
diff --git a/src/app/services/util/topic-cloud-admin.service.ts b/src/app/services/util/topic-cloud-admin.service.ts
index 84cd5e70e621154544ed96590d786c912f54a202..7be5419e196a0d8ee43190aa0cfb786769a27d76 100644
--- a/src/app/services/util/topic-cloud-admin.service.ts
+++ b/src/app/services/util/topic-cloud-admin.service.ts
@@ -1,8 +1,8 @@
 import { Injectable } from '@angular/core';
 import {
-  TopicCloudAdminData,
   KeywordOrFulltext,
-  spacyLabels
+  spacyLabels,
+  TopicCloudAdminData
 } from '../../components/shared/_dialogs/topic-cloud-administration/TopicCloudAdminData';
 import { RoomService } from '../http/room.service';
 import { ProfanityFilter, Room } from '../../models/room';
@@ -12,6 +12,7 @@ import { WsRoomService } from '../websockets/ws-room.service';
 import { ProfanityFilterService } from './profanity-filter.service';
 import { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';
 import { Comment } from '../../models/comment';
+import { UserRole } from '../../models/user-roles.enum';
 
 @Injectable({
   providedIn: 'root',
@@ -124,7 +125,7 @@ export class TopicCloudAdminService {
     return this.adminData.asObservable();
   }
 
-  ensureRoomBound(roomId: string) {
+  ensureRoomBound(roomId: string, userRole: UserRole) {
     if (this._subscriptionWsRoom) {
       this._subscriptionWsRoom.unsubscribe();
       this._subscriptionWsRoom = null;
@@ -139,33 +140,32 @@ export class TopicCloudAdminService {
         const data = TopicCloudAdminService.getDefaultAdminData;
         data.profanityFilter = room.profanityFilter;
         data.blacklistIsActive = this.blacklistActive;
-        this.setAdminData(data, false);
+        this.setAdminData(data, false, userRole);
       }
     });
   }
 
-  setAdminData(_adminData: TopicCloudAdminData, updateRoom: boolean) {
+  setAdminData(_adminData: TopicCloudAdminData, updateRoom: boolean, userRole: UserRole) {
     localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData));
-    if (updateRoom) {
+    if (updateRoom && userRole && userRole > UserRole.PARTICIPANT) {
       this.getRoom().subscribe(room => {
         room.blacklistIsActive = _adminData.blacklistIsActive;
         this.updateRoom(room);
       });
-    } else {
-      const subscription = this.getBlacklist().subscribe(list => {
-        _adminData.blacklist = [];
-        if (_adminData.blacklistIsActive) {
-          _adminData.blacklist = list;
-        }
-        if (_adminData.profanityFilter !== ProfanityFilter.deactivated) {
-          _adminData.blacklist = _adminData.blacklist.concat(this.profanityFilterService.getProfanityList);
-        }
-        localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData));
-        _adminData.blacklistIsActive = this.blacklistActive;
-        this.adminData.next(_adminData);
-        subscription.unsubscribe();
-      });
     }
+    const subscription = this.getBlacklist().subscribe(list => {
+      _adminData.blacklist = [];
+      if (_adminData.blacklistIsActive) {
+        _adminData.blacklist = list;
+      }
+      if (_adminData.profanityFilter !== ProfanityFilter.deactivated) {
+        _adminData.blacklist = _adminData.blacklist.concat(this.profanityFilterService.getProfanityList);
+      }
+      localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData));
+      _adminData.blacklistIsActive = this.blacklistActive;
+      this.adminData.next(_adminData);
+      subscription.unsubscribe();
+    });
   }
 
   getBlacklist(): Observable<string[]> {