diff --git a/src/main/webapp/app/exercise-details/exercise-details.component.html b/src/main/webapp/app/exercise-details/exercise-details.component.html
index 7a80355086519815d455bdce43d2d2f784251d6f..3e2dfae014baff3e7f70bc85a789d61d96b90dfa 100644
--- a/src/main/webapp/app/exercise-details/exercise-details.component.html
+++ b/src/main/webapp/app/exercise-details/exercise-details.component.html
@@ -121,7 +121,39 @@
                                                 class="metadata-table-description">
                                             </td>
                                             <td class="metadata-table-value"
-                                                [innerHTML]="arrayToString(exercise.creators.map(getPersonName))">
+                                                [innerHTML]="arrayToString(exercise.creators.map(getPersonDetails))">
+                                            </td>
+                                        </tr>
+                                    </ng-container>
+
+                                    <ng-container *ngIf="exercise.contributor">
+                                        <tr *ngIf="exercise.contributor.length > 0">
+                                            <td *ngIf="exercise.contributor.length === 1"
+                                                jhiTranslate="exercise.metadata.contributorSingular"
+                                                class="metadata-table-description">
+                                            </td>
+                                            <td *ngIf="exercise.contributor.length > 1"
+                                                jhiTranslate="exercise.metadata.contributorsPlural"
+                                                class="metadata-table-description">
+                                            </td>
+                                            <td class="metadata-table-value"
+                                                [innerHTML]="arrayToString(exercise.contributor.map(getPersonDetails))">
+                                            </td>
+                                        </tr>
+                                    </ng-container>
+
+                                    <ng-container *ngIf="exercise.publisher">
+                                        <tr *ngIf="exercise.publisher.length > 0">
+                                            <td *ngIf="exercise.publisher.length === 1"
+                                                jhiTranslate="exercise.metadata.publisherSingular"
+                                                class="metadata-table-description">
+                                            </td>
+                                            <td *ngIf="exercise.publisher.length > 1"
+                                                jhiTranslate="exercise.metadata.publisherPlural"
+                                                class="metadata-table-description">
+                                            </td>
+                                            <td class="metadata-table-value"
+                                                [innerHTML]="arrayToString(exercise.publisher.map(getPersonDetails))">
                                             </td>
                                         </tr>
                                     </ng-container>
@@ -218,11 +250,19 @@
                                         </td>
                                     </tr>
 
+                                    <tr *ngIf="exercise.structure">
+                                        <td jhiTranslate="exercise.metadata.structure" class="metadata-table-description">
+                                        </td>
+                                        <td class="metadata-table-value">
+                                            {{'exercise.metadata.' + exercise.structure | translate }}
+                                        </td>
+                                    </tr>
+
                                     <tr *ngIf="exercise.status">
                                         <td jhiTranslate="exercise.metadata.status" class="metadata-table-description">
                                         </td>
                                         <td class="metadata-table-value">
-                                            {{exercise.status}}
+                                            {{'exercise.metadata.' + exercise.status | translate }}
                                         </td>
                                     </tr>
 
@@ -255,6 +295,17 @@
                                             </td>
                                         </tr>
                                     </ng-container>
+                                    <ng-container *ngIf="exercise.version">
+                                        <tr>
+                                            <td jhiTranslate="exercise.metadata.metadataVersion"
+                                                class="metadata-table-description">
+                                            </td>
+                                            <td class="metadata-table-value">
+                                                {{exercise.metadataVersion}}
+                                            </td>
+                                        </tr>
+                                    </ng-container>
+
 
 
                                 </table>
@@ -263,9 +314,8 @@
 
                             <div class="col-6 col-md-4"></div>
                             <div class="col-12 col-md-8">
-                                <p style="text-align: left;"><strong jhiTranslate="exercise.export.export"></strong>
+                                <p style="text-align: left; margin-top: 5px;"><strong jhiTranslate="exercise.export.export"></strong>
                                 </p>
-                                <hr>
                                 <a href="#" class="btn btn-outline-secondary" role="button" aria-pressed="true"
                                     style="float: left; margin-right: 5px; margin-top: 5px;"
                                     jhiTranslate="exercise.export.artemis"></a>
diff --git a/src/main/webapp/app/exercise-details/exercise-details.component.scss b/src/main/webapp/app/exercise-details/exercise-details.component.scss
index 89f1f9dfc74d2a9bf392a994fbfefa81cc3e23f3..97d0f1f48317a443a5f2465c43c32852454b29f5 100644
--- a/src/main/webapp/app/exercise-details/exercise-details.component.scss
+++ b/src/main/webapp/app/exercise-details/exercise-details.component.scss
@@ -21,11 +21,15 @@
 }
 
 .metadata-table-description {
-  padding: 10px;
+  padding: 3px;
 }
 
 .metadata-table-value {
-  padding: 5px;
+  padding: 3px;
+}
+
+.blackLink {
+  color: black;
 }
 
 .modal-title {
@@ -36,10 +40,10 @@
   text-align: left;
 }
 
-.onhoverIcon:hover ~ .onhoverIconDisplay {
-  visibility: visible;
-}
+// .onhoverIcon:hover ~ .onhoverIconDisplay {
+//   visibility: visible;
+// }
 
-.onhoverIconDisplay {
-  visibility: hidden;
-}
+// .onhoverIconDisplay {
+//   visibility: hidden;
+// }
diff --git a/src/main/webapp/app/exercise-details/exercise-details.component.ts b/src/main/webapp/app/exercise-details/exercise-details.component.ts
index ebbfe2bd00e802a3f882a13431371100fe9d2027..a8052d73e4e13e6b4e2ff2868f27cadbd3d591cb 100644
--- a/src/main/webapp/app/exercise-details/exercise-details.component.ts
+++ b/src/main/webapp/app/exercise-details/exercise-details.component.ts
@@ -18,6 +18,10 @@ export class ExerciseDetailsComponent implements OnInit {
     return person.name;
   }
 
+  public getPersonDetails(person: Person): string {
+    return "<a class='blackLink' href= 'mailto:'" + person.email + '>' + person.name + ', ' + person.affiliation + '</a>';
+  }
+
   public arrayToString(array: string[]): string {
     let result = '';
     let i = 1;
diff --git a/src/main/webapp/app/mock-search/mock-search.component.ts b/src/main/webapp/app/mock-search/mock-search.component.ts
index d750fae9d98acb0c7d7f066f63e915e84b6ac740..5a80a4c14c792e98648df920d9514d14b433a07d 100644
--- a/src/main/webapp/app/mock-search/mock-search.component.ts
+++ b/src/main/webapp/app/mock-search/mock-search.component.ts
@@ -34,7 +34,13 @@ export class MockSearchComponent implements OnInit {
   }
 
   private search(): void {
-    if (this.searchInput.fulltextQuery || this.searchInput.metadata.programmingLanguage || this.searchInput.metadata.keyword || this.searchInput.metadata.author || this.searchInput.metadata.license) {
+    if (
+      this.searchInput.fulltextQuery ||
+      this.searchInput.metadata.programmingLanguage ||
+      this.searchInput.metadata.keyword ||
+      this.searchInput.metadata.author ||
+      this.searchInput.metadata.license
+    ) {
       this.searchService.searchPageDetails(this.searchInput).subscribe(
         (data: SearchResultsDTO) => {
           const searchResults = this.parseSearchResultsDTO(data);
@@ -59,6 +65,8 @@ export class MockSearchComponent implements OnInit {
       programmingLanguages: searchResult.programmingLanguage,
       languages: searchResult.language,
       creators: searchResult.creator,
+      contributor: searchResult.contributor,
+      publisher: searchResult.publisher,
       imageURL: searchResult.image,
       rating: 5,
       lastUpdate: '2021-01-01',
@@ -71,7 +79,9 @@ export class MockSearchComponent implements OnInit {
       keyword: searchResult.keyword,
       status: searchResult.status,
       type: searchResult.type,
+      structure: searchResult.structure,
       version: searchResult.version,
+      metadataVersion: searchResult.metadataVersion,
     };
   }
 
diff --git a/src/main/webapp/app/shared/model/exercise.model.ts b/src/main/webapp/app/shared/model/exercise.model.ts
index e13db0dc996cab17b441e5f23d14cb0e1f69bdb8..978233a9d6926a2e1f6f9d5be00727af349be08a 100644
--- a/src/main/webapp/app/shared/model/exercise.model.ts
+++ b/src/main/webapp/app/shared/model/exercise.model.ts
@@ -11,6 +11,8 @@ export interface Exercise {
   programmingLanguages: string[];
   languages: string[];
   creators: Person[];
+  publisher: Person[];
+  contributor: Person[];
   requires: string[];
   imageURL: string;
   timeRequired: string;
@@ -25,7 +27,9 @@ export interface Exercise {
   status: string;
   //structure: string;
   type: IExerciseType;
+  structure: string;
   version: string;
+  metadataVersion: string;
 
   // not in metadata
   rating: number;
diff --git a/src/main/webapp/i18n/de/exercise.json b/src/main/webapp/i18n/de/exercise.json
index 3d929b2b04175e0ccabfbb596215a542b98cb85a..acace12a1326db2cff5790581ef4071f4371af94 100644
--- a/src/main/webapp/i18n/de/exercise.json
+++ b/src/main/webapp/i18n/de/exercise.json
@@ -17,6 +17,10 @@
       "languagesPlural": "Sprachen",
       "creatorSingular": "Ersteller",
       "creatorsPlural": "Ersteller",
+      "contributorsSingular": "Mitwirkender",
+      "contributorsPlural": "Mitwirkende",
+      "publisherSingular": "Publisher",
+      "publisherPlural": "Publisher",
       "lastUpdate": "Letzte Aktualisierung",
       "license": "Lizenz",
       "timeRequired": "Benötigte Zeit",
@@ -34,10 +38,20 @@
       "status": "Status",
       "type": "Typ",
       "version": "Version",
+      "metadataVersion": "Metadata Version",
       "collection": "Aufgabensammlung",
       "exercise": "Aufgabe",
       "programming exercise": "Programmieraufgabe",
-      "other": "Andere"
+      "other": "Andere",
+      "structure": "Struktur",
+      "atomic": "Atomar",
+      "networked": "Vernetzt",
+      "hierarchical": "Hierarchisch",
+      "linear": "Linear",
+      "final": "Final",
+      "draft": "Entwurf",
+      "revised": "Ãœberarbeitet",
+      "unavailable": "Nicht verfügbar"
     },
     "export": {
       "export": "Exportieren",
diff --git a/src/main/webapp/i18n/en/exercise.json b/src/main/webapp/i18n/en/exercise.json
index 2ba616972b63e7bf82dec0a8c4b5003c6ffb0aed..d06ba46ae99763dd8bc1a1cdcf2e8dee927a7e8c 100644
--- a/src/main/webapp/i18n/en/exercise.json
+++ b/src/main/webapp/i18n/en/exercise.json
@@ -17,6 +17,10 @@
       "languagesPlural": "Languages",
       "creatorSingular": "Creator",
       "creatorsPlural": "Creators",
+      "contributorsSingular": "Contributor",
+      "contributorsPlural": "Contributors",
+      "publisherSingular": "Publisher",
+      "publisherPlural": "Publishers",
       "lastUpdate": "Last update",
       "license": "License",
       "timeRequired": "Time required",
@@ -34,10 +38,20 @@
       "status": "Status",
       "type": "Typ",
       "version": "Version",
+      "metadataVersion": "Metadata Version",
       "collection": "Collection",
       "exercise": "Exercise",
       "programming exercise": "Programming Exercise",
-      "other": "Other"
+      "other": "Other",
+      "structure": "Structure",
+      "atomic": "Atomic",
+      "networked": "Networked",
+      "hierarchical": "Hierarchical",
+      "linear": "Linear",
+      "final": "Final",
+      "draft": "Draft",
+      "revised": "Revised",
+      "unavailable": "Unavailable"
     },
     "export": {
       "export": "Export",