diff --git a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html
index 6db0e2c65a1add3dbf6def7311057d8f6811ae90..94f50b3a8ebdf386f0286b64663c5dc996cf6689 100644
--- a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html
+++ b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html
@@ -56,12 +56,12 @@
         </td>
       </tr>
       <ng-template ngFor let-version [ngForOf]="app.versions.sort(appVersionCompare)">
-        <tr *ngIf="versionRowVisible[i]" class="table-row" [routerLink]="['/admin/apps/edit/version', version?.appVersionId]">
-          <td></td>
-          <td></td>
-          <td></td>
-          <td>{{version.version}}</td>
-          <td>{{"ENUM.STATE." + getStateAsString(version.state).toUpperCase() | translate }}</td>
+        <tr *ngIf="versionRowVisible[i]" class="table-row" >
+          <td [routerLink]="['/admin/apps/edit/version', version?.appVersionId]"></td>
+          <td [routerLink]="['/admin/apps/edit/version', version?.appVersionId]"></td>
+          <td [routerLink]="['/admin/apps/edit/version', version?.appVersionId]"></td>
+          <td [routerLink]="['/admin/apps/edit/version', version?.appVersionId]">{{version.version}}</td>
+          <td [routerLink]="['/admin/apps/edit/version', version?.appVersionId]">{{"ENUM.STATE." + getStateAsString(version.state).toUpperCase() | translate }}</td>
           <td class="text-right">
             <a [routerLink]="['/admin/apps/view', version?.appVersionId]">
               <em class="far fa-eye icon-black icon-bigger"></em>
@@ -74,6 +74,9 @@
               <li *roles="['ROLE_SYSTEM_ADMIN']">
                 <a (click)="showModal($event, app, version)" *ngIf="getStateAsString(version?.state) !== 'DELETED'">{{ 'APPS_MANAGEMENT.CHANGE_STATE_BUTTON' | translate }}</a>
               </li>
+              <li>
+                <a (click)="getApplicationInfoJSON(version?.appVersionId)">{{'APPS_MANAGEMENT.EXPORT_JSON' | translate}}</a>
+              </li>
               <li>
                 <a [routerLink]="['/admin/apps/edit/version', version?.appVersionId]">{{ 'APPS_MANAGEMENT.EDIT_BUTTON' | translate }}</a>
               </li>
diff --git a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts
index 8f0e6740db44ab496bcff3cecced1de9cb6c92d5..abd9378a08de9bbe9d8c96f5cba18b9821b486f3 100644
--- a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts
+++ b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts
@@ -8,6 +8,7 @@ import {ApplicationVersion} from '../../../model/application-version';
 import {map} from 'rxjs/operators';
 import {ApplicationBase} from '../../../model/application-base';
 import * as semver from 'semver'
+import {ApplicationDTO} from '../../../model/application-dto';
 
 @Component({
     selector: 'nmaas-appmanagementlist',
@@ -29,6 +30,9 @@ export class AppManagementListComponent implements OnInit {
 
     public filteredApps: ApplicationBase[] = [];
 
+    public blobUrl;
+
+
     constructor(public appsService: AppsService,
                 public router: Router,
                 public authService: AuthService) {
@@ -104,4 +108,58 @@ export class AppManagementListComponent implements OnInit {
             this.apps = this.filteredApps
         }
     }
+
+    public getApplicationInfoJSON(id: number) {
+        this.appsService.getApplicationDTO(id).subscribe( appDTO => {
+           // const app = appDTO;
+            appDTO = this.deleteIDsFields(appDTO);
+           let blob = new Blob([JSON.stringify(appDTO, null, 4)], {type: 'application/json'})
+            this.blobUrl = window.URL.createObjectURL(blob);
+            let a = document.createElement('a');
+            document.body.appendChild(a);
+            a.setAttribute('style', 'display: none');
+            a.href = this.blobUrl;
+            a.download = `${appDTO.applicationBase.name}-${appDTO.application.version}.json`
+            a.click();
+            window.URL.revokeObjectURL(this.blobUrl);
+            a.remove();
+        })
+    }
+
+    private deleteIDsFields(app: ApplicationDTO) {
+        app.applicationBase.id = null;
+        app.applicationBase.owner = null;
+        app.applicationBase.tags.forEach(tag => {
+            tag.id = null;
+        })
+        app.applicationBase.versions = null;
+        app.application.id = null;
+        if (app.application.configWizardTemplate !== null) {
+            app.application.configWizardTemplate.id = null;
+        }
+        if (app.application.configUpdateWizardTemplate !== null) {
+            app.application.configUpdateWizardTemplate.id = null;
+        }
+        if (app.application.appDeploymentSpec !== null) {
+            app.application.appDeploymentSpec.id = null;
+            if (app.application.appDeploymentSpec.kubernetesTemplate !== null) {
+                app.application.appDeploymentSpec.kubernetesTemplate.id = null;
+                app.application.appDeploymentSpec.kubernetesTemplate.chart.id = null;
+            }
+            app.application.appDeploymentSpec.storageVolumes.forEach(storageVolume => {
+                storageVolume.id = null;
+            })
+            app.application.appDeploymentSpec.accessMethods.forEach(accessMethod => {
+                accessMethod.id = null;
+            })
+        }
+        if (app.application.appConfigurationSpec !== null) {
+            app.application.appConfigurationSpec.id = null;
+            app.application.appConfigurationSpec.templates.forEach(template => {
+                template.id = null;
+                template.applicationId = null;
+            })
+        }
+        return app;
+    }
 }