diff --git a/src/app/+item-page/simple/item-types/publication/publication.component.ts b/src/app/+item-page/simple/item-types/publication/publication.component.ts
index 8f0bdc141d9940f8697d5aa473243883bf0aeb49..5bc118a4ca1b2a646659b05c7d0aac89a28eb15c 100644
--- a/src/app/+item-page/simple/item-types/publication/publication.component.ts
+++ b/src/app/+item-page/simple/item-types/publication/publication.component.ts
@@ -5,10 +5,10 @@ import { ItemComponent } from '../shared/item.component';
 import { MetadataRepresentation } from '../../../../core/shared/metadata-representation/metadata-representation.model';
 import { getRelatedItemsByTypeLabel } from '../shared/item-relationships-utils';
 import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
 
 @listableObjectComponent('Publication', ViewMode.StandalonePage)
-@listableObjectComponent(DEFAULT_ITEM_TYPE, ViewMode.StandalonePage)
+@listableObjectComponent(Item.name, ViewMode.StandalonePage)
 @Component({
   selector: 'ds-publication',
   styleUrls: ['./publication.component.scss'],
diff --git a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html
index 0bc7d5124406b004993e153635510fd1f3cae3ac..c875f7fe325d73a8606038121aab527d1e55c0d8 100644
--- a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html
+++ b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html
@@ -1,5 +1,5 @@
 <ds-metadata-field-wrapper *ngIf="representations && representations.length > 0" [label]="label">
-  <ds-listable-object-component-loader *ngFor="let rep of representations"
-                           [object]="rep" [viewMode]="viewMode">
-  </ds-listable-object-component-loader>
+    <ds-metadata-representation-loader *ngFor="let rep of representations"
+                                       [mdRepresentation]="rep">
+    </ds-metadata-representation-loader>
 </ds-metadata-field-wrapper>
diff --git a/src/app/+my-dspace-page/my-dspace-page.module.ts b/src/app/+my-dspace-page/my-dspace-page.module.ts
index 6d2b8c0614540289fa97128f007c2665f3f725e9..685f1155be886404f9080052ff19f88a62e53fa7 100644
--- a/src/app/+my-dspace-page/my-dspace-page.module.ts
+++ b/src/app/+my-dspace-page/my-dspace-page.module.ts
@@ -58,7 +58,8 @@ import { PoolSearchResultDetailElementComponent } from '../shared/object-detail/
     WorkspaceItemSearchResultDetailElementComponent,
     WorkflowItemSearchResultDetailElementComponent,
     ClaimedTaskSearchResultDetailElementComponent,
-    PoolSearchResultDetailElementComponent
+    PoolSearchResultDetailElementComponent,
+    ItemSearchResultListElementSubmissionComponent
   ]
 })
 
diff --git a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html
index 132a0d22040141c37952b2c8ad9937ff6977691c..63eb0ff9a71bb3f18b2b9c5706b77584028c3f52 100644
--- a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html
+++ b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html
@@ -4,7 +4,8 @@
     [hasBorder]="hasBorder"
     [sortConfig]="searchConfig.sort"
     [objects]="searchResults"
-    [hideGear]="true">
+    [hideGear]="true"
+    [context]="context">
   </ds-viewable-collection>
 </div>
 <ds-loading *ngIf="isLoading()" message="{{'loading.mydspace-results' | translate}}"></ds-loading>
diff --git a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts
index a72e797b352cc03264c3d8786bf94a1f99bde6cf..61669277cf6829aa1c8760466d5e2eebf0557e49 100644
--- a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts
+++ b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts
@@ -7,6 +7,7 @@ import { PaginatedList } from '../../core/data/paginated-list';
 import { ViewMode } from '../../core/shared/view-mode.model';
 import { isEmpty } from '../../shared/empty.util';
 import { SearchResult } from '../../+search-page/search-result.model';
+import { Context } from '../../core/shared/context.model';
 
 /**
  * Component that represents all results for mydspace page
@@ -36,6 +37,7 @@ export class MyDSpaceResultsComponent {
    */
   @Input() viewMode: ViewMode;
 
+  context = Context.Submission;
   /**
    * A boolean representing if search results entry are separated by a line
    */
diff --git a/src/app/+search-page/search-result.model.ts b/src/app/+search-page/search-result.model.ts
index 0006426119cc490c3bd7ed2b9c0b0a590b4b8807..693f81e65b51b12389b890c68e67aa9516879cb5 100644
--- a/src/app/+search-page/search-result.model.ts
+++ b/src/app/+search-page/search-result.model.ts
@@ -16,7 +16,7 @@ export class SearchResult<T extends DSpaceObject> implements ListableObject {
    */
   hitHighlights: MetadataMap;
 
-  getRenderType(): string {
-    return this.indexableObject.getRenderType() + 'SearchResult';
+  getRenderTypes(): string[] {
+    return this.indexableObject.getRenderTypes().map((type) => type +'SearchResult');
   }
 }
diff --git a/src/app/core/metadata/metadata-field.model.ts b/src/app/core/metadata/metadata-field.model.ts
index e451398fab18ac57f63c21131bef211094549732..b4a20924b95cb235d4de7ceeccdf7b42d5bea071 100644
--- a/src/app/core/metadata/metadata-field.model.ts
+++ b/src/app/core/metadata/metadata-field.model.ts
@@ -51,7 +51,7 @@ export class MetadataField implements ListableObject {
     return key;
   }
 
-  getRenderType(): string {
-    return this.constructor.name;
+  getRenderTypes(): string[] {
+    return [this.constructor.name];
   }
 }
diff --git a/src/app/core/metadata/metadata-schema.model.ts b/src/app/core/metadata/metadata-schema.model.ts
index 6859f580c09560422fbeca865aee1f215cc0f523..f1551327a53d6245a96ce141393f2611f8aa8971 100644
--- a/src/app/core/metadata/metadata-schema.model.ts
+++ b/src/app/core/metadata/metadata-schema.model.ts
@@ -27,7 +27,7 @@ export class MetadataSchema implements ListableObject {
    */
   namespace: string;
 
-  getRenderType(): string {
-    return this.constructor.name;
+  getRenderTypes(): string[] {
+    return [this.constructor.name];
   }
 }
diff --git a/src/app/core/shared/browse-entry.model.ts b/src/app/core/shared/browse-entry.model.ts
index 067fac2bff15e933716f5bd4faa606af255a9396..a8b41894f5c8d69b7c4356929804ed6520011c3c 100644
--- a/src/app/core/shared/browse-entry.model.ts
+++ b/src/app/core/shared/browse-entry.model.ts
@@ -29,7 +29,7 @@ export class BrowseEntry implements ListableObject {
    */
   count: number;
 
-  getRenderType(): string {
-    return (this as any).type.value;
+  getRenderTypes(): string[] {
+    return [this.constructor.name];
   }
 }
diff --git a/src/app/core/shared/dspace-object.model.ts b/src/app/core/shared/dspace-object.model.ts
index 0a22315598117a538c9453eb5f5218db2851f269..16f4002b7f8658199f40c7c485be5de9c79521ab 100644
--- a/src/app/core/shared/dspace-object.model.ts
+++ b/src/app/core/shared/dspace-object.model.ts
@@ -146,7 +146,7 @@ export class DSpaceObject implements CacheableObject, ListableObject {
     });
   }
 
-  getRenderType(): string {
-    return this.constructor.name;
+  getRenderTypes(): string[] {
+    return [this.constructor.name];
   }
 }
diff --git a/src/app/core/shared/item.model.ts b/src/app/core/shared/item.model.ts
index 28a889a18f1a5a5860615110022a3d4cadf860a2..2f553a58dbdf50184118c1ce64119662c37c5036 100644
--- a/src/app/core/shared/item.model.ts
+++ b/src/app/core/shared/item.model.ts
@@ -5,7 +5,7 @@ import { DSpaceObject } from './dspace-object.model';
 import { Collection } from './collection.model';
 import { RemoteData } from '../data/remote-data';
 import { Bitstream } from './bitstream.model';
-import { hasValue, isNotEmpty } from '../../shared/empty.util';
+import { hasValue, isEmpty, isNotEmpty } from '../../shared/empty.util';
 import { PaginatedList } from '../data/paginated-list';
 import { Relationship } from './item-relationships/relationship.model';
 import { ResourceType } from './resource-type';
@@ -110,11 +110,11 @@ export class Item extends DSpaceObject {
       }));
   }
 
-  getRenderType(): string {
-    const entityType = this.firstMetadataValue('relationship.type');
-    if (isNotEmpty(entityType)) {
-      return entityType;
+  getRenderTypes(): string[] {
+    let entityType = this.firstMetadataValue('relationship.type');
+    if (isEmpty(entityType)) {
+      entityType = 'Publication';
     }
-    return 'Publication';
+    return [entityType, ...super.getRenderTypes()];
   }
 }
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html
index ed5d11ef7168527dc505dd6cc46d50e8a97b22df..23cc3ae2856a9312654bd553e8020902ce1356c1 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
             </div>
         </a>
         <div class="card-body">
-            <ds-item-type-badge [object]="object"></ds-item-type-badge>
+            <ds-item-type-badge [object]="dso"></ds-item-type-badge>
             <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                 <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4>
             </ds-truncatable-part>
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html
index 4dea5fc87992fd01613b3c20924bbb18227e05b6..f9ee1c51b7050e35976cdac8b1206fec0e1e026b 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
                 </div>
             </a>
             <div class="card-body">
-                <ds-item-type-badge [object]="object"></ds-item-type-badge>
+                <ds-item-type-badge [object]="dso"></ds-item-type-badge>
                 <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                     <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4>
                 </ds-truncatable-part>
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html
index 2474c27b6c207111ae6faf695be17f2244f02343..72faf6a864896353f49f65fcc8667e5720e7898b 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
             </div>
         </a>
         <div class="card-body">
-            <ds-item-type-badge [object]="object"></ds-item-type-badge>
+            <ds-item-type-badge [object]="dso"></ds-item-type-badge>
             <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                 <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4>
             </ds-truncatable-part>
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html
index f3fc0d269bc2e5ffe49e6f42fd5254922f0f07ae..675044294a6dfa12536780bcaeffac7edeae0190 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
             </div>
         </a>
         <div class="card-body">
-            <ds-item-type-badge [object]="object"></ds-item-type-badge>
+            <ds-item-type-badge [object]="dso"></ds-item-type-badge>
             <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                 <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('organization.legalName')"></h4>
             </ds-truncatable-part>
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html
index 523f524834b96d28d2c674a6d6894e4d4be2ecf5..378bf43ec28510b6aea390696a8031747c2073fe 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
             </div>
         </a>
         <div class="card-body">
-            <ds-item-type-badge [object]="object"></ds-item-type-badge>
+            <ds-item-type-badge [object]="dso"></ds-item-type-badge>
             <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                 <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('person.familyName') + ', ' + dso.firstMetadataValue('person.givenName')"></h4>
             </ds-truncatable-part>
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html
index c409a850cdae54641f8f26e1edfc9941854b4ab4..4e98f94fb9059b882f973ffa3865a97ae4c9aab3 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
             </div>
         </a>
         <div class="card-body">
-            <ds-item-type-badge [object]="object"></ds-item-type-badge>
+            <ds-item-type-badge [object]="dso"></ds-item-type-badge>
             <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                 <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4>
             </ds-truncatable-part>
diff --git a/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts
index 62a257010f1cc97b33dce7454f2c977c12263d0e..708139da95e4aff0a8ebc2d9c79b4ed182f8fd57 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts
@@ -1,7 +1,4 @@
 import { Component } from '@angular/core';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
 import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component';
 import { Item } from '../../../../core/shared/item.model';
 import { metadataRepresentationComponent } from '../../../../shared/metadata-representation/metadata-representation.decorator';
diff --git a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts
index 04d66dcf34151be3aa4ac55fac5abe139cf2bbe4..5f158158d892e227d91491516afc4de9e57eaee4 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts
@@ -1,10 +1,10 @@
 import { Component } from '@angular/core';
-import { metadataRepresentationComponent } from '../../../../shared/metadata-representation/metadata-representation.decorator';
-import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model';
 import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component';
 import { Item } from '../../../../core/shared/item.model';
+import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { ViewMode } from '../../../../core/shared/view-mode.model';
 
-@metadataRepresentationComponent('Project', MetadataRepresentationType.PlainText)
+@listableObjectComponent('Project', ViewMode.ListElement)
 @Component({
   selector: 'ds-project-list-element',
   styleUrls: ['./project-list-element.component.scss'],
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts
index 5fd5d57d8133491db814f678c46e09adbdffc848..c00ae53d6c715d61ca34aa0f8f04b05fb2f86d0c 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts
@@ -1,11 +1,11 @@
 import { Component } from '@angular/core';
 import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
 import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
-import { metadataRepresentationComponent } from '../../../../../shared/metadata-representation/metadata-representation.decorator';
-import { MetadataRepresentationType } from '../../../../../core/shared/metadata-representation/metadata-representation.model';
 import { Item } from '../../../../../core/shared/item.model';
+import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
 
-@metadataRepresentationComponent('ProjectSearchResult', MetadataRepresentationType.PlainText)
+@listableObjectComponent('ProjectSearchResult', ViewMode.ListElement)
 @Component({
   selector: 'ds-project-search-result-list-element',
   styleUrls: ['./project-search-result-list-element.component.scss'],
diff --git a/src/app/shared/metadata-representation/metadata-representation.decorator.ts b/src/app/shared/metadata-representation/metadata-representation.decorator.ts
index 42495fec81580009d0c0eadd0ec002f0ef38aea5..913599b989a2c7e40f9cd499dfdd6728679573a3 100644
--- a/src/app/shared/metadata-representation/metadata-representation.decorator.ts
+++ b/src/app/shared/metadata-representation/metadata-representation.decorator.ts
@@ -1,7 +1,7 @@
 import { MetadataRepresentationType } from '../../core/shared/metadata-representation/metadata-representation.model';
 import { hasNoValue, hasValue } from '../empty.util';
 import { Context } from '../../core/shared/context.model';
-import { DEFAULT_ITEM_TYPE } from '../object-collection/shared/listable-object/listable-object.decorator';
+import { Item } from '../../core/shared/item.model';
 
 const map = new Map();
 
@@ -39,5 +39,5 @@ export function getMetadataRepresentationComponent(entityType: string, mdReprese
     }
     return mapForEntity.get(DEFAULT_REPRESENTATION_TYPE).get(DEFAULT_CONTEXT);
   }
-  return map.get(DEFAULT_ITEM_TYPE).get(DEFAULT_REPRESENTATION_TYPE).get(DEFAULT_CONTEXT);
+  return map.get(Item.name).get(DEFAULT_REPRESENTATION_TYPE).get(DEFAULT_CONTEXT);
 }
\ No newline at end of file
diff --git a/src/app/shared/object-collection/object-collection.component.html b/src/app/shared/object-collection/object-collection.component.html
index b3175aef2ba900c43c7a531db001312c0daac937..cd845b5b47037ab9adcfed06ee7c20d66de9cc87 100644
--- a/src/app/shared/object-collection/object-collection.component.html
+++ b/src/app/shared/object-collection/object-collection.component.html
@@ -3,6 +3,7 @@
                 [objects]="objects"
                 [hasBorder]="hasBorder"
                 [hideGear]="hideGear"
+                [context]="context"
                 (paginationChange)="onPaginationChange($event)"
                 (pageChange)="onPageChange($event)"
                 (pageSizeChange)="onPageSizeChange($event)"
@@ -15,6 +16,7 @@
                 [sortConfig]="sortConfig"
                 [objects]="objects"
                 [hideGear]="hideGear"
+                [context]="context"
                 (paginationChange)="onPaginationChange($event)"
                 (pageChange)="onPageChange($event)"
                 (pageSizeChange)="onPageSizeChange($event)"
@@ -27,6 +29,7 @@
                   [sortConfig]="sortConfig"
                   [objects]="objects"
                   [hideGear]="hideGear"
+                  [context]="context"
                   *ngIf="(currentMode$ | async) === viewModeEnum.DetailedListElement">
 </ds-object-detail>
 
diff --git a/src/app/shared/object-collection/object-collection.component.ts b/src/app/shared/object-collection/object-collection.component.ts
index 2b25915f1e7a2d974f6c987eca812ec828724d3e..175bd3ea53db2b7ccafe00f75a9562beba4e28fb 100644
--- a/src/app/shared/object-collection/object-collection.component.ts
+++ b/src/app/shared/object-collection/object-collection.component.ts
@@ -24,6 +24,7 @@ export class ObjectCollectionComponent implements OnInit {
   @Input() sortConfig: SortOptions;
   @Input() hasBorder = false;
   @Input() hideGear = false;
+  @Input() context: string;
   pageInfo: Observable<PageInfo>;
   /**
    * An event fired when the page is changed.
diff --git a/src/app/shared/object-collection/shared/listable-object.model.ts b/src/app/shared/object-collection/shared/listable-object.model.ts
index 62ab24ae33c6325d31eb7f8429068b97966cf3bf..cef068e47cb487ba4483a5b6e5a92a0f1d3b6641 100644
--- a/src/app/shared/object-collection/shared/listable-object.model.ts
+++ b/src/app/shared/object-collection/shared/listable-object.model.ts
@@ -1,5 +1,5 @@
 import { TypedObject } from '../../../core/cache/object-cache.reducer';
 
 export interface ListableObject extends TypedObject {
-  getRenderType(): string;
+  getRenderTypes(): string[];
 }
diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts
index 00e78a3d50a6d26f2355e5964d2e673e911f26ae..45367df857ab8c32be96f4144e3512ca455b0927 100644
--- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts
+++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts
@@ -49,6 +49,6 @@ export class ListableObjectComponentLoaderComponent implements OnInit {
    * @returns {string}
    */
   private getComponent(): GenericConstructor<Component> {
-    return getListableObjectComponent(this.object.getRenderType(), this.viewMode)
+    return getListableObjectComponent(this.object.getRenderTypes(), this.viewMode, this.context)
   }
 }
diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts
index 092bf8068f293f30a3d01c28e9f6fb8587f4e549..29cd1287a1f0e011c748171b5d4d511bc5b51691 100644
--- a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts
+++ b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts
@@ -1,15 +1,12 @@
 import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { GenericConstructor } from '../../../../core/shared/generic-constructor';
-import { ListableObject } from '../listable-object.model';
 import { Context } from '../../../../core/shared/context.model';
 import { hasNoValue, hasValue } from '../../../empty.util';
 import { DEFAULT_CONTEXT } from '../../../metadata-representation/metadata-representation.decorator';
 
-export const DEFAULT_ITEM_TYPE = 'Default';
 export const DEFAULT_VIEW_MODE = ViewMode.ListElement;
 
 
-const listElementMap = new Map();
+const map = new Map();
 
 /**
  * Decorator used for rendering simple item pages by type and viewMode (and optionally a representationType)
@@ -21,30 +18,40 @@ export function listableObjectComponent(objectType: string, viewMode: ViewMode,
     if (hasNoValue(objectType)) {
       return;
     }
-    if (hasNoValue(listElementMap.get(objectType))) {
-      listElementMap.set(objectType, new Map());
+    if (hasNoValue(map.get(objectType))) {
+      map.set(objectType, new Map());
     }
-    if (hasNoValue(listElementMap.get(objectType).get(viewMode))) {
-      listElementMap.get(objectType).set(viewMode, new Map());
+    if (hasNoValue(map.get(objectType).get(viewMode))) {
+      map.get(objectType).set(viewMode, new Map());
     }
-    listElementMap.get(objectType).get(viewMode).set(context, component);
+    map.get(objectType).get(viewMode).set(context, component);
   };
 }
 
 
-export function getListableObjectComponent(entityType: GenericConstructor<ListableObject> | string, viewMode: ViewMode, context: Context = DEFAULT_CONTEXT) {
-  const mapForType = listElementMap.get(entityType);
-  if (hasValue(mapForType)) {
-    const typeAndMDRepMap = mapForType.get(viewMode);
-    if (hasValue(typeAndMDRepMap)) {
-      if (hasValue(typeAndMDRepMap.get(context))) {
-        return typeAndMDRepMap.get(context);
+export function getListableObjectComponent(types: string[], viewMode: ViewMode, context: Context = DEFAULT_CONTEXT) {
+  let bestMatch = undefined;
+  let bestMatchValue = 0;
+  for (let i = 0; i < types.length; i++) {
+    const typeMap = map.get(types[i]);
+    if (hasValue(typeMap)) {
+      const typeModeMap = typeMap.get(viewMode);
+      if (hasValue(typeModeMap)) {
+        if (hasValue(typeModeMap.get(context))) {
+          console.log(typeModeMap.get(context));
+          return typeModeMap.get(context);
+        }
+        if (bestMatchValue < 2 && hasValue(typeModeMap.get(DEFAULT_CONTEXT))) {
+          bestMatchValue = 2;
+          bestMatch = typeModeMap.get(DEFAULT_CONTEXT);
+        }
       }
-      if (hasValue(typeAndMDRepMap.get(DEFAULT_CONTEXT))) {
-        return typeAndMDRepMap.get(DEFAULT_CONTEXT);
+      if (bestMatchValue < 1 && hasValue(typeMap.get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT))) {
+        bestMatchValue = 1;
+        bestMatch = typeMap.get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT);
       }
     }
-    return mapForType.get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT);
   }
-  return listElementMap.get(DEFAULT_ITEM_TYPE).get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT);
+  console.log(bestMatch);
+  return bestMatch;
 }
\ No newline at end of file
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts
index c0e3db6348b9a1c8aad58ffffbe95a7cd3c95a1f..4a9b4d6380711a2b510704fe9f80acda2aa2bd96 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts
@@ -17,6 +17,12 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search-
 })
 
 @listableObjectComponent('PublicationSearchResult', ViewMode.DetailedListElement)
+@listableObjectComponent('OrgUnitSearchResult', ViewMode.DetailedListElement)
+@listableObjectComponent('PersonSearchResult', ViewMode.DetailedListElement)
+@listableObjectComponent('JournalSearchResult', ViewMode.DetailedListElement)
+@listableObjectComponent('JournalIssueSearchResult', ViewMode.DetailedListElement)
+@listableObjectComponent('JournalVolumeSearchResult', ViewMode.DetailedListElement)
+@listableObjectComponent('ProjectSearchResult', ViewMode.DetailedListElement)
 export class ItemSearchResultDetailElementComponent extends SearchResultDetailElementComponent<ItemSearchResult, Item> {
 
   /**
diff --git a/src/app/shared/object-detail/object-detail.component.html b/src/app/shared/object-detail/object-detail.component.html
index 400781b6d2fc1aab8e6c78492470a6e51ea14cba..7fef7d9689be5582201c160456ea3b6f251af753 100644
--- a/src/app/shared/object-detail/object-detail.component.html
+++ b/src/app/shared/object-detail/object-detail.component.html
@@ -14,9 +14,9 @@
     <div class="row mt-2" *ngIf="objects?.hasSucceeded" @fadeIn>
       <div class="col"
            *ngFor="let object of objects?.payload?.page">
-        <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode"></ds-listable-object-component-loader>
+        <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context"></ds-listable-object-component-loader>
       </div>
     </div>
-  <ds-error *ngIf="objects.hasFailed | async" message="{{'error.objects' | translate}}"></ds-error>
-  <ds-loading *ngIf="objects.isLoading | async" message="{{'loading.objects' | translate}}"></ds-loading>
+  <ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error>
+  <ds-loading *ngIf="objects.isLoading" message="{{'loading.objects' | translate}}"></ds-loading>
 </ds-pagination>
diff --git a/src/app/shared/object-detail/object-detail.component.scss b/src/app/shared/object-detail/object-detail.component.scss
index 9a077e3e08ecb6e8fa8362cf04e4f8f8bc6fbec8..e0a4e3abdc962d9e79b5f27581584fc2a3f2203f 100644
--- a/src/app/shared/object-detail/object-detail.component.scss
+++ b/src/app/shared/object-detail/object-detail.component.scss
@@ -1,9 +1,9 @@
 @import '../../../styles/variables';
 @import '../../../styles/mixins';
 
-ds-wrapper-detail-element ::ng-deep {
+:host::ng-deep {
   div.thumbnail > img {
     height: $card-thumbnail-height;
     width: 100%;
   }
-}
+}
\ No newline at end of file
diff --git a/src/app/shared/object-detail/object-detail.component.ts b/src/app/shared/object-detail/object-detail.component.ts
index 24df1bf50468c60826ed6f6f443503afac05c548..93da1bcce6098b304970ef4344c43e3e198d0e7d 100644
--- a/src/app/shared/object-detail/object-detail.component.ts
+++ b/src/app/shared/object-detail/object-detail.component.ts
@@ -16,6 +16,7 @@ import { ListableObject } from '../object-collection/shared/listable-object.mode
 
 import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
 import { ViewMode } from '../../core/shared/view-mode.model';
+import { Context } from '../../core/shared/context.model';
 
 /**
  * This component renders a paginated set of results in the detail view.
@@ -50,6 +51,7 @@ export class ObjectDetailComponent {
    * A boolean representing if to hide pagination when there is only a page
    */
   @Input() hidePagerWhenSinglePage = true;
+  @Input() context: Context;
 
   /**
    * The list of objects to paginate
diff --git a/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts b/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts
index 0893d6b12169cc9d0e18535761def1989b0c306a..4927b18b9d2ae6545639889ac9b297d6ffd10779 100644
--- a/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts
+++ b/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts
@@ -1,12 +1,12 @@
 import { Component } from '@angular/core';
 import { focusShadow } from '../../../../animations/focus';
 import { ViewMode } from '../../../../../core/shared/view-mode.model';
-import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator';
+import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator';
 import { AbstractListableElementComponent } from '../../../../object-collection/shared/object-collection-element/abstract-listable-element.component';
 import { Item } from '../../../../../core/shared/item.model';
 
 @listableObjectComponent('Publication', ViewMode.GridElement)
-@listableObjectComponent(DEFAULT_ITEM_TYPE, ViewMode.GridElement)
+@listableObjectComponent(Item.name, ViewMode.GridElement)
 @Component({
   selector: 'ds-publication-grid-element',
   styleUrls: ['./publication-grid-element.component.scss'],
diff --git a/src/app/shared/object-grid/object-grid.component.html b/src/app/shared/object-grid/object-grid.component.html
index c5cd34608f4a096717a9abaa4fc764bbec8b8e10..f527aa35551369c0c2cc9c4733feb403d713058a 100644
--- a/src/app/shared/object-grid/object-grid.component.html
+++ b/src/app/shared/object-grid/object-grid.component.html
@@ -13,11 +13,11 @@
     <div class="card-columns row" *ngIf="objects?.hasSucceeded">
       <div class="card-column col col-sm-6 col-lg-4" *ngFor="let column of (columns$ | async)" @fadeIn>
         <div class="card-element" *ngFor="let object of column">
-          <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode"></ds-listable-object-component-loader>
+          <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context"></ds-listable-object-component-loader>
         </div>
       </div>
     </div>
-  <ds-error *ngIf="objects.hasFailed | async" message="{{'error.objects' | translate}}"></ds-error>
-  <ds-loading *ngIf="objects.isLoading | async" message="{{'loading.objects' | translate}}"></ds-loading>
+  <ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error>
+  <ds-loading *ngIf="objects.isLoading" message="{{'loading.objects' | translate}}"></ds-loading>
 </ds-pagination>
 
diff --git a/src/app/shared/object-grid/object-grid.component.scss b/src/app/shared/object-grid/object-grid.component.scss
index 8f19309d89fd948d5597dcf5127610283ac03628..fb883a1f07440651d307e5021f9c511c9636ce31 100644
--- a/src/app/shared/object-grid/object-grid.component.scss
+++ b/src/app/shared/object-grid/object-grid.component.scss
@@ -1,6 +1,6 @@
 $ds-wrapper-grid-spacing: $spacer/2;
 
-ds-wrapper-grid-element ::ng-deep {
+:host ::ng-deep {
   div.thumbnail > img {
     height: $card-thumbnail-height;
     width: 100%;
diff --git a/src/app/shared/object-grid/object-grid.component.ts b/src/app/shared/object-grid/object-grid.component.ts
index d3bfbb8e5804783b944c5d02224f821dc53ded25..52f6e29d14024f44b65c73611429c45f3fb4a8ef 100644
--- a/src/app/shared/object-grid/object-grid.component.ts
+++ b/src/app/shared/object-grid/object-grid.component.ts
@@ -21,6 +21,7 @@ import { ListableObject } from '../object-collection/shared/listable-object.mode
 
 import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
 import { ViewMode } from '../../core/shared/view-mode.model';
+import { Context } from '../../core/shared/context.model';
 
 @Component({
   changeDetection: ChangeDetectionStrategy.Default,
@@ -32,12 +33,13 @@ import { ViewMode } from '../../core/shared/view-mode.model';
 })
 
 export class ObjectGridComponent implements OnInit {
-  viewMode = ViewMode.ListElement;
+  viewMode = ViewMode.GridElement;
 
   @Input() config: PaginationComponentOptions;
   @Input() sortConfig: SortOptions;
   @Input() hideGear = false;
   @Input() hidePagerWhenSinglePage = true;
+  @Input() context: Context;
   private _objects$: BehaviorSubject<RemoteData<PaginatedList<ListableObject>>>;
 
   @Input() set objects(objects: RemoteData<PaginatedList<ListableObject>>) {
diff --git a/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html b/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html
index d5b481f13c4347f11c2c9cc7b68fce0bc2ade5fd..e0eedc22fc95a7728e049385ca0e7019fce80981 100644
--- a/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html
+++ b/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html
@@ -7,7 +7,7 @@
             </div>
         </a>
         <div class="card-body">
-            <ds-item-type-badge [object]="object"></ds-item-type-badge>
+            <ds-item-type-badge [object]="dso"></ds-item-type-badge>
             <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4">
                 <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4>
             </ds-truncatable-part>
diff --git a/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts b/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts
index 9c1b27e785164505077ae1fbc2c28454eb3273e3..73cdf978ac56708cdf49e5e082f935eaea48b76b 100644
--- a/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts
+++ b/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts
@@ -1,11 +1,11 @@
 import { Component } from '@angular/core';
 import { ViewMode } from '../../../../../core/shared/view-mode.model';
-import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator';
+import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator';
 import { AbstractListableElementComponent } from '../../../../object-collection/shared/object-collection-element/abstract-listable-element.component';
 import { Item } from '../../../../../core/shared/item.model';
 
 @listableObjectComponent('Publication', ViewMode.ListElement)
-@listableObjectComponent(DEFAULT_ITEM_TYPE, ViewMode.ListElement)
+@listableObjectComponent(Item.name, ViewMode.ListElement)
 @Component({
   selector: 'ds-publication-list-element',
   styleUrls: ['./publication-list-element.component.scss'],
diff --git a/src/app/shared/object-list/item-type-badge/item-type-badge.component.html b/src/app/shared/object-list/item-type-badge/item-type-badge.component.html
index 35d76638018a58a452f9517300abcb11ce08e719..947970b7e10e61d44f3d6dfd0b997320520f9767 100644
--- a/src/app/shared/object-list/item-type-badge/item-type-badge.component.html
+++ b/src/app/shared/object-list/item-type-badge/item-type-badge.component.html
@@ -1,3 +1,3 @@
-<div *ngIf="object && object.indexableObject && object.indexableObject.firstMetadataValue('relationship.type') as type">
+<div *ngIf="object && object.firstMetadataValue('relationship.type') as type">
   <span class="badge badge-light">{{ type.toLowerCase() + '.listelement.badge' | translate }}</span>
 </div>
diff --git a/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts b/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts
index 25e97d59f62a87d120718dbaf9fd759a8918271c..08ff67e3f180dbbbcd50577562305efb45b3f109 100644
--- a/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts
+++ b/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts
@@ -3,9 +3,9 @@ import { Component } from '@angular/core';
 import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component';
 import { ViewMode } from '../../../../core/shared/view-mode.model';
 import { metadataRepresentationComponent } from '../../../metadata-representation/metadata-representation.decorator';
-import { DEFAULT_ITEM_TYPE } from '../../../object-collection/shared/listable-object/listable-object.decorator';
+import { Item } from '../../../../core/shared/item.model';
 
-@metadataRepresentationComponent(DEFAULT_ITEM_TYPE, MetadataRepresentationType.Item)
+@metadataRepresentationComponent(Item.name, MetadataRepresentationType.Item)
 @Component({
   selector: 'ds-item-metadata-list-element',
   templateUrl: './item-metadata-list-element.component.html'
diff --git a/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts b/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts
index 20d7c9739e1e41f732d9795c1c4cdca569bc9fe7..50e2c2a60b8b5f1a2aa88c0a055e20b59e49be3e 100644
--- a/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts
+++ b/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts
@@ -2,11 +2,11 @@ import { MetadataRepresentationType } from '../../../../core/shared/metadata-rep
 import { Component } from '@angular/core';
 import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component';
 import { metadataRepresentationComponent } from '../../../metadata-representation/metadata-representation.decorator';
-import { DEFAULT_ITEM_TYPE } from '../../../object-collection/shared/listable-object/listable-object.decorator';
+import { Item } from '../../../../core/shared/item.model';
 
-@metadataRepresentationComponent(DEFAULT_ITEM_TYPE, MetadataRepresentationType.PlainText)
+@metadataRepresentationComponent(Item.name, MetadataRepresentationType.PlainText)
 // For now, authority controlled fields are rendered the same way as plain text fields
-@metadataRepresentationComponent(DEFAULT_ITEM_TYPE, MetadataRepresentationType.AuthorityControlled)
+@metadataRepresentationComponent(Item.name, MetadataRepresentationType.AuthorityControlled)
 @Component({
   selector: 'ds-plain-text-metadata-list-element',
   templateUrl: './plain-text-metadata-list-element.component.html'
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts
index 5668ece14e94a7f1bb3ada382791cc5a5f6fa3b9..1e74487a97561c4e31d28447b37ff0df4dab1e19 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts
@@ -46,6 +46,7 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle
    * Initialize all instance variables
    */
   ngOnInit() {
+    super.ngOnInit();
     this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>);
   }
 
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts
index 6ff9afd0d74266a21640a89e0c4e9c6286e5839a..31d2977304de96c3eae721867c0e1393420bb990 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts
@@ -1,4 +1,4 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
 
 import { Item } from '../../../../core/shared/item.model';
 import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
@@ -17,12 +17,14 @@ import { SearchResultListElementComponent } from '../../search-result-list-eleme
   templateUrl: './item-search-result-list-element-submission.component.html'
 })
 
-@listableObjectComponent('PublicationSearchResult', ViewMode.ListElement, Context.Submission)
-export class ItemSearchResultListElementSubmissionComponent extends SearchResultListElementComponent<ItemSearchResult, Item> {
+@listableObjectComponent(ItemSearchResult.name, ViewMode.ListElement, Context.Submission)
+export class ItemSearchResultListElementSubmissionComponent extends SearchResultListElementComponent<ItemSearchResult, Item> implements OnInit {
+  ngOnInit() {
+    super.ngOnInit();
+  }
 
   /**
    * Represent item's status
    */
   public status = MyDspaceItemStatusType.ARCHIVED;
-
 }
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts
index 3ec85ae0403944eaecad293f4dac8d1e6aa98681..92e0ea38184745bfc8489af557c0b768e962fe9a 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts
@@ -51,6 +51,7 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen
    * Initialize all instance variables
    */
   ngOnInit() {
+    super.ngOnInit();
     this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>);
   }
 
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts
index d5ac65c740fef6091a7ee563e54a92ac59d3c046..6a9013b9afb30b38184e5eca6062e56c1038e22a 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts
@@ -39,6 +39,7 @@ export class WorkflowItemSearchResultListElementComponent extends SearchResultLi
    * Initialize all instance variables
    */
   ngOnInit() {
+    super.ngOnInit();
     this.initItem(this.dso.item as Observable<RemoteData<Item>> );
   }
 
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts
index e4d8409f1c1ac0610fed87c14d1f7ac04d1637a1..dd32f56ababe105737ac9513858593cbba71cd19 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts
@@ -39,6 +39,7 @@ export class WorkspaceItemSearchResultListElementComponent extends SearchResultL
    * Initialize all instance variables
    */
   ngOnInit() {
+    super.ngOnInit();
     this.initItem(this.dso.item as Observable<RemoteData<Item>>);
   }
 
diff --git a/src/app/shared/object-list/object-list.component.html b/src/app/shared/object-list/object-list.component.html
index b19daa035af820b7948c20c2dc7c10083f136d5a..daec1db8ade6625292bd1f02f5ee8496b70baff1 100644
--- a/src/app/shared/object-list/object-list.component.html
+++ b/src/app/shared/object-list/object-list.component.html
@@ -12,7 +12,7 @@
   (paginationChange)="onPaginationChange($event)">
   <ul *ngIf="objects?.hasSucceeded" class="list-unstyled">
       <li *ngFor="let object of objects?.payload?.page; let i = index; let last = last" class="mt-4 mb-4" [class.border-bottom]="hasBorder && !last">
-        <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i"></ds-listable-object-component-loader>
+        <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i" [context]="context"></ds-listable-object-component-loader>
       </li>
   </ul>
 </ds-pagination>
diff --git a/src/app/shared/object-list/object-list.component.ts b/src/app/shared/object-list/object-list.component.ts
index cf4728464a601c6d25fe4e980ab2106ca01d9770..0776134e83d4f09def396d84865bcf397a425a2f 100644
--- a/src/app/shared/object-list/object-list.component.ts
+++ b/src/app/shared/object-list/object-list.component.ts
@@ -13,6 +13,7 @@ import { fadeIn } from '../animations/fade';
 import { ListableObject } from '../object-collection/shared/listable-object.model';
 import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
 import { ViewMode } from '../../core/shared/view-mode.model';
+import { Context } from '../../core/shared/context.model';
 
 @Component({
   changeDetection: ChangeDetectionStrategy.Default,
@@ -29,6 +30,7 @@ export class ObjectListComponent {
   @Input() hasBorder = false;
   @Input() hideGear = false;
   @Input() hidePagerWhenSinglePage = true;
+  @Input() context: Context;
   private _objects: RemoteData<PaginatedList<ListableObject>>;
   @Input() set objects(objects: RemoteData<PaginatedList<ListableObject>>) {
     this._objects = objects;
diff --git a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts
index 1a678dddb74163d46b12e7fd1ebad5c91e99cc14..014763c53aa2897d4becb37f9c17e6b87a5d5e58 100644
--- a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts
+++ b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts
@@ -6,7 +6,6 @@ import { Collection } from '../../../../core/shared/collection.model';
 import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
 import { ViewMode } from '../../../../core/shared/view-mode.model';
 import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { BrowseEntry } from '../../../../core/shared/browse-entry.model';
 
 @Component({
   selector: 'ds-collection-search-result-list-element',
diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html
index f6bfe787cb9fa79feaa887096ccac37d0259df4e..62b9bc5e7409509a6d27e16f0dfcd7992a704c3a 100644
--- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html
+++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html
@@ -1,13 +1,13 @@
-    <ds-item-type-badge [object]="dso"></ds-item-type-badge>
+<ds-item-type-badge [object]="dso"></ds-item-type-badge>
 
-    <ds-truncatable [id]="dso.id" *ngIf="object !== undefined && object !== null">
-        <a
-                [routerLink]="['/items/' + dso.id]" class="lead"
-                [innerHTML]="firstMetadataValue('dc.title')"></a>
-        <span class="text-muted">
+<ds-truncatable [id]="dso.id" *ngIf="object !== undefined && object !== null">
+    <a
+            [routerLink]="['/items/' + dso.id]" class="lead"
+            [innerHTML]="firstMetadataValue('dc.title')"></a>
+    <span class="text-muted">
     <ds-truncatable-part [id]="dso.id" [minLines]="1">
             <ng-container *ngIf="dso.firstMetadataValue('dc.publisher') || dso.firstMetadataValue('dc.date.issued')">(<span class="item-list-publisher"
-                                                                                                                              [innerHTML]="firstMetadataValue('dc.publisher')">, </span><span
+                                                                                                                            [innerHTML]="firstMetadataValue('dc.publisher')">, </span><span
                     *ngIf="dso.firstMetadataValue('dc.date.issued')" class="item-list-date"
                     [innerHTML]="firstMetadataValue('dc.date.issued')"></span>)</ng-container>
             <span *ngIf="dso.allMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']).length > 0"
@@ -19,9 +19,9 @@
             </span>
         </ds-truncatable-part>
   </span>
-        <div *ngIf="dso.firstMetadataValue('dc.description.abstract')" class="item-list-abstract">
-            <ds-truncatable-part [id]="dso.id" [minLines]="3"><span
-                    [innerHTML]="firstMetadataValue('dc.description.abstract')"></span>
-            </ds-truncatable-part>
-        </div>
-    </ds-truncatable>
+    <div *ngIf="dso.firstMetadataValue('dc.description.abstract')" class="item-list-abstract">
+        <ds-truncatable-part [id]="dso.id" [minLines]="3"><span
+                [innerHTML]="firstMetadataValue('dc.description.abstract')"></span>
+        </ds-truncatable-part>
+    </div>
+</ds-truncatable>