diff --git a/src/app/access/stores/access.state.ts b/src/app/access/stores/access.state.ts
index e54ef3d9f9047c95ee1d19adb0585d6c043c500f..5c7c29a7531aada5942691a6c163d4dc0fd64356 100644
--- a/src/app/access/stores/access.state.ts
+++ b/src/app/access/stores/access.state.ts
@@ -24,7 +24,7 @@ export interface AccessStateModel extends ResourceStateModel<ArchiveMetadataMode
   defaults: {
     search: null,
     total: 0,
-    isLoading: false,
+    isLoadingCounter: 0,
     list: [],
     current: null,
     queryParameters: new QueryParametersModel(),
@@ -48,7 +48,7 @@ export class AccessState {
   searchDip(ctx: StateContext<AccessStateModel>, action: AccessSearch): Observable<CollectionTypedModel<ArchiveMetadataModel>> {
     const searchString = this.getSearchStringToApply(ctx, action);
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
       search: searchString,
     });
 
@@ -91,7 +91,7 @@ export class AccessState {
     ctx.patchState({
       list: action.list === null || action.list === undefined ? [] : action.list._data,
       total: action.list === null || action.list === undefined ? 0 : action.list._page.totalItems,
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
       queryParameters,
     });
   }
@@ -99,7 +99,7 @@ export class AccessState {
   @Action(AccessSearchFail)
   searchDipFail(ctx: StateContext<AccessStateModel>): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 }
diff --git a/src/app/access/views/access/access.view.ts b/src/app/access/views/access/access.view.ts
index d5d488cfc58a8e06d08840324c12c1d04188c44d..db069bc298b968d641443b97bf5622f169d35357 100644
--- a/src/app/access/views/access/access.view.ts
+++ b/src/app/access/views/access/access.view.ts
@@ -2,6 +2,7 @@ import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core";
 import {AccessChangeQueryParameters, AccessSearch} from "@app/access/stores/access.action";
 import {ArchiveModel} from "@app/access/models/archive.model";
 import {isNotNullNorUndefined} from "@app/core/tools/is/is.tool";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {DepositsModel, OrganizationalUnitsModel} from "@app/generated-api";
 import {AbstractComponent} from "@app/shared/components/abstract/abstract.component";
 import {FieldTypeEnum} from "@app/shared/enums/field-type.enum";
@@ -27,11 +28,11 @@ import {tap} from "rxjs/internal/operators/tap";
 })
 export class AccessView extends AbstractComponent implements OnInit {
   @Select((state: StateModel) => state[StateEnum.access].search) search$: Observable<boolean>;
-  @Select((state: StateModel) => state[StateEnum.access].isLoading) isLoading$: Observable<boolean>;
+  @Select((state: StateModel) => StoreUtil.isLoadingState(state[StateEnum.access])) isLoading$: Observable<boolean>;
   @Select((state: StateModel) => state[StateEnum.access].list) list$: Observable<ArchiveMetadataModel[]>;
   @Select((state: StateModel) => state[StateEnum.access].queryParameters) queryParameters$: Observable<ArchiveMetadataModel[]>;
   @Select((state: StateModel) => state[StateEnum.organizationalUnit].list) listOrganizationalUnit$: Observable<OrganizationalUnitsModel[]>;
-  @Select((state: StateModel) => state[StateEnum.organizationalUnit].isLoading) isLoadingOrgUnit$: Observable<boolean>;
+  @Select((state: StateModel) => StoreUtil.isLoadingState(state[StateEnum.organizationalUnit])) isLoadingOrgUnit$: Observable<boolean>;
 
   columns: DataTableColumnsModel[];
 
diff --git a/src/app/core/models/stores/base-resource.state.ts b/src/app/core/models/stores/base-resource.state.ts
index e4869a38ab0b25382802ef430e7a5d4f1b8afb25..9b103b1d37f290183c70995fca52f91678e599fd 100644
--- a/src/app/core/models/stores/base-resource.state.ts
+++ b/src/app/core/models/stores/base-resource.state.ts
@@ -1,7 +1,6 @@
 import {BaseState} from "@app/core/models/stores/base.state";
 import {QueryParametersModel} from "@app/shared/models/query-parameters.model";
 
-
 export interface BaseResourceState extends BaseState {
   total: number;
   queryParameters: QueryParametersModel;
diff --git a/src/app/core/models/stores/base.state.ts b/src/app/core/models/stores/base.state.ts
index 78f8d73fe36f7d59be8ecf80d7d0f58a0e3f567b..77cd04f24e2f171b64f2565fb82a103684271e23 100644
--- a/src/app/core/models/stores/base.state.ts
+++ b/src/app/core/models/stores/base.state.ts
@@ -1,5 +1,3 @@
-
-
 export interface BaseState {
-  isLoading: boolean;
+  isLoadingCounter: number;
 }
diff --git a/src/app/core/stores/composition/composition.state.ts b/src/app/core/stores/composition/composition.state.ts
index ba5b48a41a37f8fd192585996c196d119c669ff9..34bbf6d5359f73a730cdf9f1ee40da32a3a02fe9 100644
--- a/src/app/core/stores/composition/composition.state.ts
+++ b/src/app/core/stores/composition/composition.state.ts
@@ -25,7 +25,7 @@ export interface CompositionStateModel<T> extends BaseResourceState {
 
 export const defaultCompositionStateInitValue: CompositionStateModel<any> = {
   total: 0,
-  isLoading: false,
+  isLoadingCounter: 0,
   list: [],
   queryParameters: new QueryParametersModel(),
 };
@@ -61,7 +61,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.GetAll)
   getAll<U>(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.GetAll): Observable<CollectionTypedModel<U>> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
     const queryParameters = StoreUtil.getQueryParametersToApply(action.queryParameters, ctx);
     const url = this.evaluateSubResourceUrl(action.parentId);
@@ -81,21 +81,21 @@ export abstract class CompositionState<T> {
   getAllSuccess(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.GetAllSuccess<T>): void {
     ctx.patchState({
       list: action.list._data,
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.GetAllFail)
   getAllFail(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.GetAllFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.Create)
   create(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.Create<T>): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
     const url = this.evaluateSubResourceUrl(action.parentId);
     return this.apiService.post<T>(url, action.model)
@@ -113,7 +113,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.CreateSuccess)
   createSuccess(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.CreateSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     this.notificationService.showSuccess(TRANSLATE("notification.composition.create.success"), true);
     ctx.dispatch(CompositionActionHelper.getAllSubResource(this.compositionNameSpace, action.parentId));
@@ -122,7 +122,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.CreateFail)
   createFail(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.CreateFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     this.notificationService.showSuccess(TRANSLATE("notification.composition.create.fail"), true);
   }
@@ -130,7 +130,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.Delete)
   delete(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.Delete<T>): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
     const url = this.evaluateSubResourceUrl(action.parentId);
     return this.apiService.deleteById<T>(url, action.model[ModelAttributeEnum.resId])
@@ -148,7 +148,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.DeleteSuccess)
   deleteSuccess(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.DeleteSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     this.notificationService.showSuccess(TRANSLATE("notification.composition.delete.success"), true);
     ctx.dispatch(CompositionActionHelper.getAllSubResource(this.compositionNameSpace, action.parentId));
@@ -157,7 +157,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.DeleteFail)
   deleteFail(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.DeleteFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     this.notificationService.showSuccess(TRANSLATE("notification.composition.delete.fail"), true);
   }
@@ -165,7 +165,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.Update)
   update(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.Update<T>): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
     const url = this.evaluateSubResourceUrl(action.parentId);
     return this.apiService.patchById<T>(url, action.model[ModelAttributeEnum.resId], action.model)
@@ -183,7 +183,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.UpdateSuccess)
   updateSuccess(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.UpdateSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     ctx.dispatch(CompositionActionHelper.getAllSubResource(this.compositionNameSpace, action.parentId));
   }
@@ -191,7 +191,7 @@ export abstract class CompositionState<T> {
   @RegisterDefaultAction((compositionNameSpace: CompositionNameSpace) => compositionNameSpace.UpdateFail)
   updateFail(ctx: StateContext<CompositionStateModel<T>>, action: CompositionAction.UpdateFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 }
diff --git a/src/app/core/stores/relation-2-tiers/relation-2-tiers.state.ts b/src/app/core/stores/relation-2-tiers/relation-2-tiers.state.ts
index 1c6817e7ca6039d052cf29943603d94f7f14d4d4..2643160c87374f7bbe5f671c4d3efcb006f87090 100644
--- a/src/app/core/stores/relation-2-tiers/relation-2-tiers.state.ts
+++ b/src/app/core/stores/relation-2-tiers/relation-2-tiers.state.ts
@@ -26,7 +26,7 @@ export interface Relation2TiersStateModel<T> extends BaseResourceState {
 
 export const defaultRelation2TiersStateInitValue: Relation2TiersStateModel<any> = {
   total: 0,
-  isLoading: false,
+  isLoadingCounter: 0,
   selected: [],
   queryParameters: new QueryParametersModel(),
 };
@@ -62,6 +62,9 @@ export abstract class Relation2TiersState<T> {
 
   @RegisterDefaultAction((relation2TiersNameSpace: Relation2TiersNameSpace) => relation2TiersNameSpace.GetAll)
   getAll<U>(ctx: StateContext<Relation2TiersStateModel<T>>, action: Relation2TiersAction.GetAll): Observable<CollectionTypedModel<U>> {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
+    });
     const queryParameters = StoreUtil.getQueryParametersToApply(action.queryParameters, ctx);
     const url = this.evaluateSubResourceUrl(action.parentId);
     return this.apiService.get<U>(url, queryParameters)
@@ -80,14 +83,14 @@ export abstract class Relation2TiersState<T> {
   getAllSuccess(ctx: StateContext<Relation2TiersStateModel<T>>, action: Relation2TiersAction.GetAllSuccess<T>): void {
     ctx.patchState({
       selected: action.list._data,
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((relation2TiersNameSpace: Relation2TiersNameSpace) => relation2TiersNameSpace.GetAllFail)
   getAllFail(ctx: StateContext<Relation2TiersStateModel<T>>, action: Relation2TiersAction.GetAllFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
@@ -143,7 +146,7 @@ export abstract class Relation2TiersState<T> {
   @RegisterDefaultAction((relation2TiersNameSpace: Relation2TiersNameSpace) => relation2TiersNameSpace.UpdateSuccess)
   updateSuccess(ctx: StateContext<Relation2TiersStateModel<T>>, action: Relation2TiersAction.UpdateSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     ctx.dispatch(Relation2TiersActionHelper.getAllSubResource(this.relation2TiersNameSpace, action.parentId));
   }
@@ -151,7 +154,7 @@ export abstract class Relation2TiersState<T> {
   @RegisterDefaultAction((relation2TiersNameSpace: Relation2TiersNameSpace) => relation2TiersNameSpace.UpdateFail)
   updateFail(ctx: StateContext<Relation2TiersStateModel<T>>, action: Relation2TiersAction.UpdateFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     ctx.dispatch(Relation2TiersActionHelper.getAllSubResource(this.relation2TiersNameSpace, action.parentId));
   }
diff --git a/src/app/core/stores/relation-3-tiers/relation-3-tiers.state.ts b/src/app/core/stores/relation-3-tiers/relation-3-tiers.state.ts
index e4474e23878afb52238380acb6f1a9d7b852f647..87b6ac93bc95c050e1d1a0c824e6ee646404ebdf 100644
--- a/src/app/core/stores/relation-3-tiers/relation-3-tiers.state.ts
+++ b/src/app/core/stores/relation-3-tiers/relation-3-tiers.state.ts
@@ -1,7 +1,7 @@
-import {Relation3TiersActionHelper} from "@app/core/stores/relation-3-tiers/relation-3-tiers-action.helper";
 import {ApiService} from "@app/core/http/api.service";
 import {BaseResourceState} from "@app/core/models/stores/base-resource.state";
 import {NotificationService} from "@app/core/services/notification.service";
+import {Relation3TiersActionHelper} from "@app/core/stores/relation-3-tiers/relation-3-tiers-action.helper";
 import {Relation3TiersNameSpace} from "@app/core/stores/relation-3-tiers/relation-3-tiers-namespace.model";
 import {Relation3TiersAction} from "@app/core/stores/relation-3-tiers/relation-3-tiers.action";
 import {StoreUtil} from "@app/core/utils/stores/store.util";
@@ -25,7 +25,7 @@ export interface Relation3TiersStateModel<T> extends BaseResourceState {
 
 export const defaultRelation3TiersStateInitValue: Relation3TiersStateModel<any> = {
   total: 0,
-  isLoading: false,
+  isLoadingCounter: 0,
   selected: [],
   queryParameters: new QueryParametersModel(),
 };
@@ -78,14 +78,14 @@ export abstract class Relation3TiersState<T> {
   getAllSuccess(ctx: StateContext<Relation3TiersStateModel<T>>, action: Relation3TiersAction.GetAllSuccess<T>): void {
     ctx.patchState({
       selected: action.list._data,
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((relation3TiersNameSpace: Relation3TiersNameSpace) => relation3TiersNameSpace.GetAllFail)
   getAllFail(ctx: StateContext<Relation3TiersStateModel<T>>, action: Relation3TiersAction.GetAllFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
@@ -135,7 +135,7 @@ export abstract class Relation3TiersState<T> {
   @RegisterDefaultAction((relation3TiersNameSpace: Relation3TiersNameSpace) => relation3TiersNameSpace.UpdateSuccess)
   updateSuccess(ctx: StateContext<Relation3TiersStateModel<T>>, action: Relation3TiersAction.UpdateSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     ctx.dispatch(Relation3TiersActionHelper.getAllSubResource(this.relation3TiersNameSpace, action.parentId));
   }
@@ -143,7 +143,7 @@ export abstract class Relation3TiersState<T> {
   @RegisterDefaultAction((relation3TiersNameSpace: Relation3TiersNameSpace) => relation3TiersNameSpace.UpdateFail)
   updateFail(ctx: StateContext<Relation3TiersStateModel<T>>, action: Relation3TiersAction.UpdateFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
     ctx.dispatch(Relation3TiersActionHelper.getAllSubResource(this.relation3TiersNameSpace, action.parentId));
   }
diff --git a/src/app/core/stores/resource/resource.state.ts b/src/app/core/stores/resource/resource.state.ts
index 080cd628304e9769bf67bdfd66830b4509a5e41c..1a8027a7a243b5d09b8a410cbd11c5c2cefde493 100644
--- a/src/app/core/stores/resource/resource.state.ts
+++ b/src/app/core/stores/resource/resource.state.ts
@@ -14,7 +14,7 @@ import {CollectionTypedModel} from "@app/shared/models/collection-typed.model";
 import {QueryParametersModel} from "@app/shared/models/query-parameters.model";
 import {StateModel} from "@app/shared/models/state.model";
 import {Navigate} from "@ngxs/router-plugin";
-import {Actions, StateContext, Store} from "@ngxs/store";
+import {StateContext, Store} from "@ngxs/store";
 import {Observable} from "rxjs";
 import {catchError} from "rxjs/internal/operators/catchError";
 import {tap} from "rxjs/operators";
@@ -27,7 +27,7 @@ export interface ResourceStateModel<T> extends BaseResourceState {
 
 export const defaultResourceStateInitValue: ResourceStateModel<any> = {
   total: 0,
-  isLoading: false,
+  isLoadingCounter: 0,
   list: [],
   current: null,
   queryParameters: new QueryParametersModel(),
@@ -65,7 +65,7 @@ export abstract class ResourceState<T> {
   getAll(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.GetAll): Observable<CollectionTypedModel<T>> {
 
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     const queryParameters = StoreUtil.getQueryParametersToApply(action.queryParameters, ctx);
@@ -89,7 +89,7 @@ export abstract class ResourceState<T> {
     ctx.patchState({
       list: action.list._data,
       total: action.list._page.totalItems,
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
       queryParameters,
     });
   }
@@ -97,14 +97,14 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.GetAllFail)
   getAllFail(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.GetAllFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.GetById)
   getById(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.GetById): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
       current: null,
     });
 
@@ -124,21 +124,21 @@ export abstract class ResourceState<T> {
   getByIdSuccess(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.GetByIdSuccess<T>): void {
     ctx.patchState({
       current: action.model,
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.GetByIdFail)
   getByIdFail(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.GetByIdFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.Create)
   create(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.Create<T>): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     return this.apiService.post<T>(this._urlResource, action.model)
@@ -156,7 +156,7 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.CreateSuccess)
   createSuccess(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.CreateSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
 
     ctx.dispatch(new Navigate([StoreRouteUtil.getRootRoute(this.state)]));
@@ -167,7 +167,7 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.CreateFail)
   createFail(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.CreateFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
@@ -187,7 +187,7 @@ export abstract class ResourceState<T> {
 
   protected internalUpdate(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.Update<T>): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     return this.apiService.patchById<T>(this._urlResource, action.model[ModelAttributeEnum.resId], action.model);
@@ -196,7 +196,7 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.UpdateSuccess)
   updateSuccess(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.UpdateSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
 
     ctx.dispatch(new Navigate([StoreRouteUtil.getRootRoute(this.state)]));
@@ -207,14 +207,14 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.UpdateFail)
   updateFail(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.UpdateFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.Delete)
   delete(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.Delete): Observable<T> {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     return this.apiService.deleteById<T>(this._urlResource, action.resId)
@@ -232,7 +232,7 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.DeleteSuccess)
   deleteSuccess(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.DeleteSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
 
     ctx.dispatch(new Navigate([StoreRouteUtil.getRootRoute(this.state)]));
@@ -243,7 +243,7 @@ export abstract class ResourceState<T> {
   @RegisterDefaultAction((resourceNameSpace: ResourceNameSpace) => resourceNameSpace.DeleteFail)
   deleteFail(ctx: StateContext<ResourceStateModel<T>>, action: ResourceAction.DeleteFail): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 }
diff --git a/src/app/core/utils/stores/store.util.ts b/src/app/core/utils/stores/store.util.ts
index 792920342aa554aa74d40b59e5d6942b9688e1e0..eb838b7d7805717d6e3550f3312fb9b40d33435e 100644
--- a/src/app/core/utils/stores/store.util.ts
+++ b/src/app/core/utils/stores/store.util.ts
@@ -1,5 +1,6 @@
 import {BaseResourceState} from "@app/core/models/stores/base-resource.state";
 import {ActionSubActionCompletionsWrapper, BaseAction, BaseSubAction} from "@app/core/models/stores/base.action";
+import {BaseState} from "@app/core/models/stores/base.state";
 import {StoreActionClass} from "@app/core/models/stores/state-action.model";
 import {ResourceStateModel} from "@app/core/stores/resource/resource.state";
 import {isNonEmptyArray, isTruthyObject} from "@app/core/tools/is/is.tool";
@@ -108,4 +109,8 @@ export class StoreUtil {
     return false;
   }
 
+  static isLoadingState(baseState: BaseState): boolean {
+    return baseState.isLoadingCounter > 0;
+  }
+
 }
diff --git a/src/app/deposit/containers/file/file.container.ts b/src/app/deposit/containers/file/file.container.ts
index 21023a73a57e17ee5909cac429346f93391396ef..16ff1a80b0801d8da16ada2ea2374dd81fa65c39 100644
--- a/src/app/deposit/containers/file/file.container.ts
+++ b/src/app/deposit/containers/file/file.container.ts
@@ -1,4 +1,5 @@
 import {ChangeDetectionStrategy, Component, Input} from "@angular/core";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {DepositDataFileModel} from "@app/deposit/models/deposit-data-file.model";
 import {UploadFileStatusModel} from "@app/deposit/models/upload-file-status.model";
 import {DepositDataFileAction} from "@app/deposit/stores/data-file/deposit-data-file.action";
@@ -17,7 +18,7 @@ import {Observable} from "rxjs";
 })
 export class FileContainer extends AbstractComponent {
   @Select((state: StateModel) => state[StateEnum.deposit][StateEnum.depositDataFile].list) listDataFile$: Observable<DepositDataFileModel[]>;
-  @Select((state: StateModel) => state[StateEnum.deposit][StateEnum.depositDataFile].isLoading) isLoadingDataFile$: Observable<boolean>;
+  @Select((state: StateModel) => StoreUtil.isLoadingState(state[StateEnum.deposit][StateEnum.depositDataFile])) isLoadingDataFile$: Observable<boolean>;
   @Select((state: StateModel) => state[StateEnum.deposit].uploadStatus) uploadStatus$: Observable<UploadFileStatusModel>;
 
   @Input()
diff --git a/src/app/deposit/stores/deposit.state.ts b/src/app/deposit/stores/deposit.state.ts
index 3649dedb167eb0df55535a2856b26b35d2c3d04e..5e831038211ec9e5225bdbbb6829458b7cb2c02f 100644
--- a/src/app/deposit/stores/deposit.state.ts
+++ b/src/app/deposit/stores/deposit.state.ts
@@ -64,7 +64,7 @@ export class DepositState extends ResourceState<DepositsModel> {
   @Action(DepositAction.LoadResource)
   loadResource(ctx: StateContext<DepositStateModel>, action: DepositAction.LoadResource): void {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     ctx.dispatch([
@@ -76,6 +76,21 @@ export class DepositState extends ResourceState<DepositsModel> {
     ]);
   }
 
+  @Action(DepositAction.LoadResourceSuccess)
+  loadResourceSuccess(ctx: StateContext<DepositStateModel>, action: DepositAction.LoadResourceSuccess): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
+    });
+  }
+
+  @Action(DepositAction.LoadResourceFail)
+  loadResourceFail(ctx: StateContext<DepositStateModel>, action: DepositAction.LoadResourceFail): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
+    });
+  }
+
+
   // @Action(DepositAction.GetAllSubResourceData, {cancelUncompleted: true})
   // getAllDataFile(ctx: StateContext<DepositStateModel>, action: DepositAction.GetAllSubResourceData): Observable<CollectionTypedModel<DepositDataFileModel>> {
   //   ctx.patchState({
diff --git a/src/app/organizational-unit/views/detail/detail.view.ts b/src/app/organizational-unit/views/detail/detail.view.ts
index f26b2fc9b372a6593fc144fbda6d41c43fcd669a..aacca57a67ae8d941a8c2f35d40f93ae71315748 100644
--- a/src/app/organizational-unit/views/detail/detail.view.ts
+++ b/src/app/organizational-unit/views/detail/detail.view.ts
@@ -1,6 +1,7 @@
 import {ChangeDetectionStrategy, Component} from "@angular/core";
 import {MatDialog} from "@angular/material";
 import {ActivatedRoute} from "@angular/router";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {OrganizationalUnitsModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api";
 import {StateEnum} from "@app/shared/enums/state.enum";
 import {StateModel} from "@app/shared/models/state.model";
@@ -19,7 +20,7 @@ import {Observable} from "rxjs";
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
 export class DetailView extends AbstractDetailView<OrganizationalUnitsModel, OrganizationalUnitStateModel> {
-  @Select((state: StateModel) => state[StateEnum.organizationalUnit][StateEnum.organizationalUnitSubResourceSubmissionPolicy].isLoading) isLoadingSubmissionPolicies$: Observable<boolean>;
+  @Select((state: StateModel) => StoreUtil.isLoadingState(state[StateEnum.organizationalUnit][StateEnum.organizationalUnitSubResourceSubmissionPolicy])) isLoadingSubmissionPolicies$: Observable<boolean>;
   @Select((state: StateModel) => state[StateEnum.organizationalUnit][StateEnum.organizationalUnitSubResourceSubmissionPolicy].selected) selectedSubmissionPolicies$: Observable<SubmissionPoliciesModel[]>;
   @Select((state: StateModel) => state[StateEnum.shared][StateEnum.submissionPolicy].list) listSubmissionPolicies$: Observable<SubmissionPoliciesModel[]>;
   @Select((state: StateModel) => state[StateEnum.shared][StateEnum.preservationPolicy].list) listPreservationPolicies$: Observable<PreservationPoliciesModel[]>;
diff --git a/src/app/organizational-unit/views/edit/edit.view.ts b/src/app/organizational-unit/views/edit/edit.view.ts
index 9e4c167904bb73defb3e73491a407a606d9c2242..46ae038cba9096bdb150e6098b97e79c57d6f085 100644
--- a/src/app/organizational-unit/views/edit/edit.view.ts
+++ b/src/app/organizational-unit/views/edit/edit.view.ts
@@ -1,11 +1,12 @@
 import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core";
 import {ActivatedRoute} from "@angular/router";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {OrganizationalUnitsModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api";
 import {StateEnum} from "@app/shared/enums/state.enum";
 import {StateModel} from "@app/shared/models/state.model";
-import {OrgUnitSubmissionPolicyAction} from "@app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.action";
 import {orgUnitActionNameSpace} from "@app/shared/stores/organizational-unit/organizational-unit.action";
 import {OrganizationalUnitStateModel} from "@app/shared/stores/organizational-unit/organizational-unit.state";
+import {OrgUnitSubmissionPolicyAction} from "@app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.action";
 import {AbstractEditView} from "@app/shared/views/abstract-edit/abstract-edit.view";
 import {Select, Store} from "@ngxs/store";
 import {Observable} from "rxjs";
@@ -17,7 +18,7 @@ import {Observable} from "rxjs";
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
 export class EditView extends AbstractEditView<OrganizationalUnitsModel, OrganizationalUnitStateModel> implements OnInit {
-  @Select((state: StateModel) => state[StateEnum.organizationalUnit][StateEnum.organizationalUnitSubResourceSubmissionPolicy].isLoading) isLoadingSubmissionPolicies$: Observable<boolean>;
+  @Select((state: StateModel) => StoreUtil.isLoadingState(state[StateEnum.organizationalUnit][StateEnum.organizationalUnitSubResourceSubmissionPolicy])) isLoadingSubmissionPolicies$: Observable<boolean>;
   @Select((state: StateModel) => state[StateEnum.organizationalUnit][StateEnum.organizationalUnitSubResourceSubmissionPolicy].selected) selectedSubmissionPolicies$: Observable<SubmissionPoliciesModel[]>;
   @Select((state: StateModel) => state[StateEnum.shared][StateEnum.submissionPolicy].list) listSubmissionPolicies$: Observable<SubmissionPoliciesModel[]>;
   @Select((state: StateModel) => state[StateEnum.shared][StateEnum.preservationPolicy].list) listPreservationPolicies$: Observable<PreservationPoliciesModel[]>;
diff --git a/src/app/shared/stores/organizational-unit/organizational-unit.state.ts b/src/app/shared/stores/organizational-unit/organizational-unit.state.ts
index acceb9911796367d2370a9b498f557dbeab2e759..a5e13df173dfe21dddb3dbbef69677b486296a24 100644
--- a/src/app/shared/stores/organizational-unit/organizational-unit.state.ts
+++ b/src/app/shared/stores/organizational-unit/organizational-unit.state.ts
@@ -66,7 +66,7 @@ export class OrganizationalUnitState extends ResourceState<OrganizationalUnitsMo
   @Action(OrgUnitAction.LoadResource)
   loadResource(ctx: StateContext<DepositStateModel>, action: OrgUnitAction.LoadResource): void {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     ctx.dispatch([
@@ -76,6 +76,20 @@ export class OrganizationalUnitState extends ResourceState<OrganizationalUnitsMo
     ]);
   }
 
+  @Action(OrgUnitAction.LoadResourceSuccess)
+  loadResourceSuccess(ctx: StateContext<DepositStateModel>, action: OrgUnitAction.LoadResourceSuccess): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
+    });
+  }
+
+  @Action(OrgUnitAction.LoadResourceFail)
+  loadResourceFail(ctx: StateContext<DepositStateModel>, action: OrgUnitAction.LoadResourceFail): void {
+    ctx.patchState({
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
+    });
+  }
+
   @OverrideDefaultAction()
   @Action(OrgUnitAction.Update, {cancelUncompleted: true})
   update(ctx: StateContext<OrganizationalUnitStateModel>, action: OrgUnitAction.Update): Observable<OrganizationalUnitsModel> {
diff --git a/src/app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.state.ts b/src/app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.state.ts
index bd8fc4918ae5e1105917cb0d087c1316d28a1670..f512c0a94f4bbe123eaef7393eff97a76a6306ad 100644
--- a/src/app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.state.ts
+++ b/src/app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.state.ts
@@ -10,14 +10,9 @@ import {OrganizationalUnitsModel, SubmissionPoliciesModel} from "@app/generated-
 import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum";
 import {AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum";
 import {StateEnum} from "@app/shared/enums/state.enum";
-import {
-  OrgUnitSubmissionPolicyAction,
-  orgUnitSubmissionPolicyActionNameSpace,
-} from "@app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.action";
+import {orgUnitSubmissionPolicyActionNameSpace} from "@app/shared/stores/organizational-unit/submission-policy/organizational-unit-submission-policy.action";
 
-import {ActionCompletion, Actions, ofActionCompleted, State, Store} from "@ngxs/store";
-import {zip} from "rxjs/internal/observable/zip";
-import {tap} from "rxjs/internal/operators/tap";
+import {Actions, State, Store} from "@ngxs/store";
 
 export interface OrganizationalUnitSubmissionPolicyStateModel extends Relation2TiersStateModel<SubmissionPoliciesModel> {
 }
diff --git a/src/app/shared/stores/shared/shared.state.ts b/src/app/shared/stores/shared/shared.state.ts
index dd794371267c56981befe8933f9dfd3a6c378688..5c3b95ff46459edecc20901a3d8d0357bba037d6 100644
--- a/src/app/shared/stores/shared/shared.state.ts
+++ b/src/app/shared/stores/shared/shared.state.ts
@@ -21,7 +21,7 @@ export interface SharedStateModel extends BaseState {
 @State<SharedStateModel>({
   name: StateEnum.shared,
   defaults: {
-    isLoading: false,
+    isLoadingCounter: 0,
     language: null,
     license: null,
     preservationPolicy: null,
@@ -39,7 +39,7 @@ export class SharedState {
   @Action(SharedAction.GetAllResources, {cancelUncompleted: true})
   getAllResources(ctx: StateContext<SharedStateModel>, action: SharedAction.GetAllResources): void {
     ctx.patchState({
-      isLoading: true,
+      isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
     ctx.dispatch([
@@ -54,14 +54,14 @@ export class SharedState {
   @Action(SharedAction.GetAllResourcesSuccess)
   getAllResourcesSuccess(ctx: StateContext<SharedStateModel>, action: SharedAction.GetAllResourcesSuccess): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 
   @Action(SharedAction.GetAllResourcesFail)
   getAllResourcesFail(ctx: StateContext<SharedStateModel>): void {
     ctx.patchState({
-      isLoading: false,
+      isLoadingCounter: ctx.getState().isLoadingCounter - 1,
     });
   }
 }
diff --git a/src/app/shared/views/abstract-detail/abstract-detail.view.ts b/src/app/shared/views/abstract-detail/abstract-detail.view.ts
index 3e222678797fd03c4d661770ce1e3fe9b0fd62c6..2e937a70f116db55caa93acddae326bcf2d8da48 100644
--- a/src/app/shared/views/abstract-detail/abstract-detail.view.ts
+++ b/src/app/shared/views/abstract-detail/abstract-detail.view.ts
@@ -2,6 +2,7 @@ import {ComponentType} from "@angular/cdk/portal";
 import {OnInit} from "@angular/core";
 import {MatDialog} from "@angular/material";
 import {ActivatedRoute} from "@angular/router";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {ResourceNameSpace} from "../../../core/stores/resource/resource.namespace";
 import {AbstractComponent} from "@app/shared/components/abstract/abstract.component";
 import {ResourceStateModel} from "@app/core/stores/resource/resource.state";
@@ -34,7 +35,7 @@ export abstract class AbstractDetailView<T, U extends ResourceStateModel<T>> ext
                         private state: StateEnum,
                         private resourceNameSpace: ResourceNameSpace) {
     super();
-    this.isLoading$ = this.store.select(s => (s[state] as U).isLoading);
+    this.isLoading$ = this.store.select(s => StoreUtil.isLoadingState(s[state] as U));
     this.current$ = this.store.select(s => (s[state] as U).current);
   }
 
diff --git a/src/app/shared/views/abstract-edit/abstract-edit.view.ts b/src/app/shared/views/abstract-edit/abstract-edit.view.ts
index 1fd019e78db3a458c5cb8563d38aa473c4b0e861..1a9b40690e0416ba12f5c8b932b872a0ecf53f4e 100644
--- a/src/app/shared/views/abstract-edit/abstract-edit.view.ts
+++ b/src/app/shared/views/abstract-edit/abstract-edit.view.ts
@@ -1,6 +1,7 @@
 import {OnInit} from "@angular/core";
 import {ActivatedRoute} from "@angular/router";
 import {ResourceActionHelper} from "@app/core/helpers/resource-action.helper";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {ResourceNameSpace} from "../../../core/stores/resource/resource.namespace";
 import {ResourceStateModel} from "@app/core/stores/resource/resource.state";
 import {AbstractComponent} from "@app/shared/components/abstract/abstract.component";
@@ -19,7 +20,7 @@ export abstract class AbstractEditView<T, U extends ResourceStateModel<T>> exten
                         private state: StateEnum,
                         private resourceNameSpace: ResourceNameSpace) {
     super();
-    this.isLoading$ = this.store.select(s => (s[state] as U).isLoading);
+    this.isLoading$ = this.store.select(s => StoreUtil.isLoadingState(s[state] as U));
     this.current$ = this.store.select(s => (s[state] as U).current);
   }
 
diff --git a/src/app/shared/views/abstract-list/abstract-list.view.ts b/src/app/shared/views/abstract-list/abstract-list.view.ts
index a4b0fc9ee766e43da1849fe2815d5f3c4bf15b22..167a0c39c48ddb8c9733910c3dae8d4cdab95604 100644
--- a/src/app/shared/views/abstract-list/abstract-list.view.ts
+++ b/src/app/shared/views/abstract-list/abstract-list.view.ts
@@ -2,6 +2,7 @@ import {OnInit} from "@angular/core";
 import {ResourceActionHelper} from "@app/core/helpers/resource-action.helper";
 import {ResourceStateModel} from "@app/core/stores/resource/resource.state";
 import {StoreRouteUtil} from "@app/core/utils/stores/store-route.util";
+import {StoreUtil} from "@app/core/utils/stores/store.util";
 import {AbstractComponent} from "@app/shared/components/abstract/abstract.component";
 import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum";
 import {StateEnum} from "@app/shared/enums/state.enum";
@@ -25,7 +26,7 @@ export abstract class AbstractListView<T, U extends ResourceStateModel<T>> exten
 
   protected constructor(protected store: Store, private state: StateEnum, private resourceNameSpace: ResourceNameSpace) {
     super();
-    this.isLoading$ = this.store.select(s => (s[state] as U).isLoading);
+    this.isLoading$ = this.store.select(s => StoreUtil.isLoadingState(s[state] as U));
     this.list$ = this.store.select(s => (s[state] as U).list);
     this.queryParameters$ = this.store.select(s => (s[state] as U).queryParameters);
   }