diff --git a/src/app/+collection-page/collection-item-mapper/collection-item-mapper.component.ts b/src/app/+collection-page/collection-item-mapper/collection-item-mapper.component.ts
index 9490e22c6cb53664ef1f3fb2d6db2ba55480d56e..9199e010b885bf2b0614165c5b88e72da375580f 100644
--- a/src/app/+collection-page/collection-item-mapper/collection-item-mapper.component.ts
+++ b/src/app/+collection-page/collection-item-mapper/collection-item-mapper.component.ts
@@ -8,7 +8,7 @@ import { Collection } from '../../core/shared/collection.model';
 import { SearchConfigurationService } from '../../+search-page/search-service/search-configuration.service';
 import { PaginatedSearchOptions } from '../../+search-page/paginated-search-options.model';
 import { PaginatedList } from '../../core/data/paginated-list';
-import { map, switchMap } from 'rxjs/operators';
+import { map, switchMap, take } from 'rxjs/operators';
 import { getSucceededRemoteData, toDSpaceObjectListRD } from '../../core/shared/operators';
 import { SearchService } from '../../+search-page/search-service/search.service';
 import { DSpaceObject } from '../../core/shared/dspace-object.model';
@@ -152,6 +152,10 @@ export class CollectionItemMapperComponent implements OnInit {
         });
       }
     });
+
+    this.collectionRD$.pipe(take(1)).subscribe((collectionRD: RemoteData<Collection>) => {
+      this.collectionDataService.clearMappingItemsRequests(collectionRD.payload.id);
+    });
   }
 
   /**
diff --git a/src/app/core/data/collection-data.service.ts b/src/app/core/data/collection-data.service.ts
index 59a6c8ca012a6f2a704013196b079ffcd5ef61cc..6733681e0f76a5cbb89aca4899dc1849f16efaed 100644
--- a/src/app/core/data/collection-data.service.ts
+++ b/src/app/core/data/collection-data.service.ts
@@ -12,17 +12,17 @@ import { HALEndpointService } from '../shared/hal-endpoint.service';
 import { Observable } from 'rxjs';
 import { RemoteData } from './remote-data';
 import { PaginatedList } from './paginated-list';
-import { distinctUntilChanged, map } from 'rxjs/operators';
+import { distinctUntilChanged, map, take } from 'rxjs/operators';
 import { hasValue, isNotEmptyOperator } from '../../shared/empty.util';
 import { GetRequest } from './request.models';
-import {
-  configureRequest
-} from '../shared/operators';
+import { configureRequest } from '../shared/operators';
 import { PaginatedSearchOptions } from '../../+search-page/paginated-search-options.model';
 import { GenericConstructor } from '../shared/generic-constructor';
 import { ResponseParsingService } from './parsing.service';
 import { DSpaceObject } from '../shared/dspace-object.model';
 import { DSOResponseParsingService } from './dso-response-parsing.service';
+import { IndexName, IndexState } from '../index/index.reducer';
+import { RemoveFromIndexBySubstringAction } from '../index/index.actions';
 
 @Injectable()
 export class CollectionDataService extends ComColDataService<NormalizedCollection, Collection> {
@@ -34,7 +34,8 @@ export class CollectionDataService extends ComColDataService<NormalizedCollectio
     protected store: Store<CoreState>,
     protected cds: CommunityDataService,
     protected halService: HALEndpointService,
-    protected objectCache: ObjectCacheService
+    protected objectCache: ObjectCacheService,
+    protected indexStore: Store<IndexState>
   ) {
     super();
   }
@@ -68,4 +69,10 @@ export class CollectionDataService extends ComColDataService<NormalizedCollectio
     return this.rdbService.buildList(href$);
   }
 
+  clearMappingItemsRequests(collectionId: string) {
+    this.getMappingItemsEndpoint(collectionId).pipe(take(1)).subscribe((href: string) => {
+      this.indexStore.dispatch(new RemoveFromIndexBySubstringAction(IndexName.REQUEST, href));
+    });
+  }
+
 }
diff --git a/src/app/core/index/index.actions.ts b/src/app/core/index/index.actions.ts
index 014b6561a394f03808dfa9303747b7f9740ed125..98d07d59d5b0d8e5dc64f7b5479c22ae7f10cb5e 100644
--- a/src/app/core/index/index.actions.ts
+++ b/src/app/core/index/index.actions.ts
@@ -8,7 +8,8 @@ import { IndexName } from './index.reducer';
  */
 export const IndexActionTypes = {
   ADD: type('dspace/core/index/ADD'),
-  REMOVE_BY_VALUE: type('dspace/core/index/REMOVE_BY_VALUE')
+  REMOVE_BY_VALUE: type('dspace/core/index/REMOVE_BY_VALUE'),
+  REMOVE_BY_SUBSTRING: type('dspace/core/index/REMOVE_BY_SUBSTRING')
 };
 
 /* tslint:disable:max-classes-per-file */
@@ -60,6 +61,30 @@ export class RemoveFromIndexByValueAction implements Action {
     this.payload = { name, value };
   }
 
+}
+
+/**
+ * An ngrx action to remove multiple values from the index by substring
+ */
+export class RemoveFromIndexBySubstringAction implements Action {
+  type = IndexActionTypes.REMOVE_BY_SUBSTRING;
+  payload: {
+    name: IndexName,
+    value: string
+  };
+
+  /**
+   * Create a new RemoveFromIndexByValueAction
+   *
+   * @param name
+   *    the name of the index to remove from
+   * @param value
+   *    the value to remove the UUID for
+   */
+  constructor(name: IndexName, value: string) {
+    this.payload = { name, value };
+  }
+
 }
 /* tslint:enable:max-classes-per-file */
 
diff --git a/src/app/core/index/index.reducer.ts b/src/app/core/index/index.reducer.ts
index c179182509685b963979f7b4d32bfc9a6df50950..dae78747942e49edc1c7e5aa0b2adeffe8414512 100644
--- a/src/app/core/index/index.reducer.ts
+++ b/src/app/core/index/index.reducer.ts
@@ -2,7 +2,8 @@ import {
   IndexAction,
   IndexActionTypes,
   AddToIndexAction,
-  RemoveFromIndexByValueAction
+  RemoveFromIndexByValueAction,
+  RemoveFromIndexBySubstringAction
 } from './index.actions';
 
 export enum IndexName {
@@ -31,6 +32,10 @@ export function indexReducer(state = initialState, action: IndexAction): IndexSt
       return removeFromIndexByValue(state, action as RemoveFromIndexByValueAction)
     }
 
+    case IndexActionTypes.REMOVE_BY_SUBSTRING: {
+      return removeFromIndexBySubstring(state, action as RemoveFromIndexBySubstringAction)
+    }
+
     default: {
       return state;
     }
@@ -60,3 +65,16 @@ function removeFromIndexByValue(state: IndexState, action: RemoveFromIndexByValu
     [action.payload.name]: newSubState
   });
 }
+
+function removeFromIndexBySubstring(state: IndexState, action: RemoveFromIndexByValueAction): IndexState {
+  const subState = state[action.payload.name];
+  const newSubState = Object.create(null);
+  for (const value in subState) {
+    if (value.indexOf(action.payload.value) < 0) {
+      newSubState[value] = subState[value];
+    }
+  }
+  return Object.assign({}, state, {
+    [action.payload.name]: newSubState
+  });
+}