diff --git a/src/app/appmarket/domains/domains.module.ts b/src/app/appmarket/domains/domains.module.ts
index af01e1f53eece3f2c3727782c3e1374a34e36e9c..7d7dbf47029cf6a452720fa33a906f0591408f4b 100644
--- a/src/app/appmarket/domains/domains.module.ts
+++ b/src/app/appmarket/domains/domains.module.ts
@@ -17,6 +17,7 @@ import { DomainGroupsComponent } from './domain-groups/domain-groups.component';
 import { DomainGroupViewComponent } from './domain-group-view/domain-group-view.component';
 import {DropdownModule} from 'primeng/dropdown';
 import {MultiSelectModule} from 'primeng/multiselect';
+import { RemovalConfirmationModalComponent } from './modals/removal-confirmation-modal/removal-confirmation-modal.component';
 
 
 
@@ -26,6 +27,7 @@ import {MultiSelectModule} from 'primeng/multiselect';
     DomainComponent,
     DomainGroupsComponent,
     DomainGroupViewComponent,
+    RemovalConfirmationModalComponent,
   ],
     imports: [
         CommonModule,
diff --git a/src/app/appmarket/domains/list/domainslist.component.html b/src/app/appmarket/domains/list/domainslist.component.html
index b3c2136d7f43688b0bce09261a6a9628564d989f..57c5fb47e1c89502cd22c8ef91e94e357c7c07b8 100644
--- a/src/app/appmarket/domains/list/domainslist.component.html
+++ b/src/app/appmarket/domains/list/domainslist.component.html
@@ -14,7 +14,7 @@
 
 		<tbody>
 			<ng-template ngFor let-domain [ngForOf]="domains | async">
-			<tr class="clickable" [routerLink]="['view/', domain.id]">
+			<tr *ngIf="!domain.deleted" [routerLink]="['view', domain.id]">
 				<td>{{domain?.codename}}</td>
 				<td>{{domain?.name}}</td>
 				<td><span class="glyphicon glyphicon-ok" *ngIf="domain?.active"></span><span class="glyphicon glyphicon-remove" *ngIf="!(domain?.active)"></span></td>				
@@ -31,9 +31,12 @@
 							<li><a *roles="['ROLE_SYSTEM_ADMIN', 'ROLE_OPERATOR']" [routerLink]="['edit/', domain.id]"
 								   class="">{{ 'DOMAINS.EDIT_BUTTON' | translate }}</a>
 							</li>
-							<li><a *roles="['ROLE_SYSTEM_ADMIN']" (click)="changeState(domain)"
+							<li><a *roles="['ROLE_SYSTEM_ADMIN']" (click)="$event.stopPropagation(); changeState(domain)"
 								   class="">{{ getStateLabel(domain?.active) }}</a>
 							</li>
+							<li><a *roles="['ROLE_SYSTEM_ADMIN']" (click)="$event.stopPropagation(); openRemovalModal(domain)"
+								   class="">{{ 'DOMAINS.DELETE_BUTTON' | translate }}</a>
+							</li>
 						</ul>
 					</span>
 				</td>
@@ -42,3 +45,5 @@
 		</tbody>
 	</table>
 </div>
+
+<app-removal-confirmation-modal [domain]="domainToRemove" (onConfirm)="softRemoveDomain(domainToRemove.id)"></app-removal-confirmation-modal>
diff --git a/src/app/appmarket/domains/list/domainslist.component.ts b/src/app/appmarket/domains/list/domainslist.component.ts
index d46263a80e087ebd2bcadbac6d4dc9169a33735c..ae21395b6974d8216b80aa78a1e510a3a2433566 100644
--- a/src/app/appmarket/domains/list/domainslist.component.ts
+++ b/src/app/appmarket/domains/list/domainslist.component.ts
@@ -2,10 +2,14 @@ import {AuthService} from '../../../auth/auth.service';
 import {Domain} from '../../../model/domain';
 import {Role} from '../../../model/userrole';
 import {DomainService} from '../../../service/domain.service';
-import {Component, OnInit} from '@angular/core';
+import {Component, OnInit, ViewChild} from '@angular/core';
 import {Observable} from 'rxjs';
 import {map} from 'rxjs/operators';
 import {TranslateService} from '@ngx-translate/core';
+import {ModalComponent} from "../../../shared";
+import {
+    RemovalConfirmationModalComponent
+} from "../modals/removal-confirmation-modal/removal-confirmation-modal.component";
 
 @Component({
     selector: 'app-domains-list',
@@ -16,6 +20,11 @@ export class DomainsListComponent implements OnInit {
 
     public domains: Observable<Domain[]>;
 
+    @ViewChild(RemovalConfirmationModalComponent)
+    public readonly modal: ModalComponent;
+
+    public domainToRemove: Domain
+
     constructor(protected domainService: DomainService, protected authService: AuthService, public translate: TranslateService) {
     }
 
@@ -33,7 +42,7 @@ export class DomainsListComponent implements OnInit {
         }
     }
 
-    protected update(): void {
+    public update(): void {
         this.domains = this.getDomainsObservable().pipe(
             map((domains) => [...domains].sort(
                 (a, b) => {
@@ -59,4 +68,15 @@ export class DomainsListComponent implements OnInit {
         return active ? this.translate.instant('DOMAINS.DISABLE_BUTTON') : this.translate.instant('DOMAINS.ENABLE_BUTTON');
     }
 
+    public softRemoveDomain(id: number): void {
+        this.domainService.remove(id, true).subscribe({
+            next: () => this.update(),
+            error: err => console.error(err)
+        });
+    }
+
+    openRemovalModal(domain: Domain) {
+        this.domainToRemove = domain
+        this.modal.show()
+    }
 }
diff --git a/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.css b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.css
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.html b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d30d18f677de7fbeb197a549e412208fe27ab4f
--- /dev/null
+++ b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.html
@@ -0,0 +1,11 @@
+<nmaas-modal styleModal="warning">
+    <div class="nmaas-modal-header">{{ 'DOMAIN_DETAILS.MODAL.HEADER' | translate }}</div>
+    <div class="nmaas-modal-body">
+        <p>{{ 'DOMAIN_DETAILS.MODAL.DESCRIPTION' | translate}}</p>
+    </div>
+    <div class="nmaas-modal-footer">
+        <button role="button" type="button" class="btn btn-success" (click)="removeDomain()">{{ 'DOMAIN_DETAILS.MODAL.BUTTONS.CONFIRM' | translate}}</button>
+        <button type="button" class="btn btn-primary" (click)="modal.hide()">{{ 'DOMAIN_DETAILS.MODAL.BUTTONS.CANCEL' | translate}}</button>
+    </div>
+</nmaas-modal>
+
diff --git a/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.spec.ts b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..572ebc13fdfc3bc24101c49b981c45a3ffb49cb9
--- /dev/null
+++ b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { RemovalConfirmationModalComponent } from './removal-confirmation-modal.component';
+
+describe('RemovalConfirmationModalComponent', () => {
+  let component: RemovalConfirmationModalComponent;
+  let fixture: ComponentFixture<RemovalConfirmationModalComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ RemovalConfirmationModalComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(RemovalConfirmationModalComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.ts b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..07a0b8a7ce950f69e2f9a51587eec220297afeb7
--- /dev/null
+++ b/src/app/appmarket/domains/modals/removal-confirmation-modal/removal-confirmation-modal.component.ts
@@ -0,0 +1,34 @@
+import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
+import {ModalComponent} from "../../../../shared";
+import {Domain} from "../../../../model/domain";
+import {DomainService} from "../../../../service";
+
+@Component({
+  selector: 'app-removal-confirmation-modal',
+  templateUrl: './removal-confirmation-modal.component.html',
+  styleUrls: ['./removal-confirmation-modal.component.css']
+})
+export class RemovalConfirmationModalComponent {
+
+  @ViewChild(ModalComponent, { static: true })
+  public readonly modal: ModalComponent;
+
+  @Input()
+  public domain: Domain;
+
+  @Output()
+  public onConfirm: EventEmitter<void> = new EventEmitter<void>();
+
+  public show() {
+    this.modal.show();
+  }
+
+  public hide() {
+    this.modal.hide();
+  }
+
+  removeDomain() {
+    this.onConfirm.emit()
+    this.hide()
+  }
+}
diff --git a/src/app/model/domain.ts b/src/app/model/domain.ts
index cb175fb72f246a1c8cb9a392ba526ef2093e4ee4..fca050c4f2cbb89151b8eb68866cfdce52abeb75 100644
--- a/src/app/model/domain.ts
+++ b/src/app/model/domain.ts
@@ -12,4 +12,5 @@ export class Domain {
   public domainTechDetails: DomainTechDetails = new DomainTechDetails();
   public applicationStatePerDomain: DomainApplicationStatePerDomain[] = [];
   public groups: DomainGroup[] = [];
+  public deleted: boolean;
 }
diff --git a/src/app/service/domain.service.ts b/src/app/service/domain.service.ts
index e168b8327b11d563b872936c34824d6b6c7551b8..3337b1902762aa14cb17b9662962d0b686c4568c 100644
--- a/src/app/service/domain.service.ts
+++ b/src/app/service/domain.service.ts
@@ -2,7 +2,7 @@ import {Injectable} from '@angular/core';
 import {Observable} from 'rxjs';
 import {GenericDataService} from './genericdata.service';
 
-import {HttpClient} from '@angular/common/http'
+import {HttpClient, HttpParams} from '@angular/common/http'
 import {AppConfigService} from './appconfig.service';
 
 import {Id} from '../model';
@@ -61,8 +61,12 @@ export class DomainService extends GenericDataService {
     return this.patch<Domain, Id>(this.url + domain.id + '/state?active=' + !domain.active, null);
   }
 
-  public remove(domainId: number): Observable<any> {
-    return this.delete(this.url + domainId);
+  public remove(domainId: number, softRemove?: boolean): Observable<any> {
+    let params = new HttpParams()
+    if (softRemove !== undefined) {
+      params = params.append("softRemove", softRemove.toString())
+    }
+    return this.http.delete(this.url + domainId, {params})
   }
 
   public getMyDomains(): Observable<Domain[]> {