diff --git a/src/components/users.js b/src/components/users.js
index b690377..38dd01f 100644
--- a/src/components/users.js
+++ b/src/components/users.js
@@ -1,4 +1,4 @@
-import React from "react";
+import React, { Fragment } from "react";
 import PersonPinIcon from "@material-ui/icons/PersonPin";
 import SettingsInputComponentIcon from "@material-ui/icons/SettingsInputComponent";
 import {
@@ -10,6 +10,7 @@ import {
   Edit,
   List,
   Filter,
+  Toolbar,
   SimpleForm,
   SimpleFormIterator,
   TabbedForm,
@@ -22,7 +23,11 @@ import {
   TextInput,
   ReferenceField,
   SelectInput,
+  BulkDeleteButton,
+  DeleteButton,
+  SaveButton,
   regex,
+  useTranslate,
   Pagination,
 } from "react-admin";
 
@@ -41,12 +46,25 @@ const UserFilter = props => (
   
 );
 
+const UserBulkActionButtons = props => {
+  const translate = useTranslate();
+  return (
+    
+      
+    
+  );
+};
+
 export const UserList = props => (
   
}
     filterDefaultValues={{ guests: true, deactivated: false }}
-    bulkActionButtons={false}
+    bulkActionButtons={}
     pagination={}
   >
     
@@ -81,6 +99,19 @@ const validateUser = regex(
   "synapseadmin.users.invalid_user_id"
 );
 
+const UserEditToolbar = props => {
+  const translate = useTranslate();
+  return (
+    
+      
+      
+    
+  );
+};
+
 export const UserCreate = props => (
   
     
@@ -106,7 +137,7 @@ export const UserCreate = props => (
 
 export const UserEdit = props => (
   
-    
+    }>
       }>
         
         
diff --git a/src/i18n/de.js b/src/i18n/de.js
index 86ace87..07a83fe 100644
--- a/src/i18n/de.js
+++ b/src/i18n/de.js
@@ -37,6 +37,10 @@ export default {
       },
       helper: {
         deactivate: "Deaktivierte Nutzer können nicht wieder aktiviert werden.",
+        erase: "DSGVO konformes Löschen der Benutzerdaten",
+      },
+      action: {
+        erase: "Lösche Benutzerdaten",
       },
     },
     rooms: {
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 296883f..7bb739a 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -37,6 +37,10 @@ export default {
       },
       helper: {
         deactivate: "Deactivated users cannot be reactivated",
+        erase: "Mark the user as GDPR-erased",
+      },
+      action: {
+        erase: "Erase user data",
       },
     },
     rooms: {
diff --git a/src/synapse/dataProvider.js b/src/synapse/dataProvider.js
index 7ffc40d..303d25c 100644
--- a/src/synapse/dataProvider.js
+++ b/src/synapse/dataProvider.js
@@ -30,6 +30,11 @@ const resourceMap = {
         ? parseInt(json.next_token, 10) + perPage
         : from + json.users.length;
     },
+    delete: id => ({
+      endpoint: `/_synapse/admin/v1/deactivate/${id}`,
+      body: { erase: true },
+      method: "POST",
+    }),
   },
   rooms: {
     path: "/_synapse/admin/v1/rooms",
@@ -202,12 +207,24 @@ const dataProvider = {
 
     const res = resourceMap[resource];
 
-    const homeserver_url = homeserver + res.path;
-    return jsonClient(`${homeserver_url}/${params.id}`, {
-      method: "DELETE",
-    }).then(({ json }) => ({
-      data: json,
-    }));
+    if ("delete" in res) {
+      const del = res["delete"](params.id);
+      const homeserver_url = homeserver + del.endpoint;
+      return jsonClient(homeserver_url, {
+        method: del.method,
+        body: JSON.stringify(del.body),
+      }).then(({ json }) => ({
+        data: json,
+      }));
+    } else {
+      const homeserver_url = homeserver + res.path;
+      return jsonClient(`${homeserver_url}/${params.id}`, {
+        method: "DELETE",
+        body: JSON.stringify(params.data, filterNullValues),
+      }).then(({ json }) => ({
+        data: json,
+      }));
+    }
   },
 
   deleteMany: (resource, params) => {
@@ -217,17 +234,32 @@ const dataProvider = {
 
     const res = resourceMap[resource];
 
-    const homeserver_url = homeserver + res.path;
-    return Promise.all(
-      params.ids.map(id =>
-        jsonClient(`${homeserver_url}/${id}`, {
-          method: "DELETE",
-          body: JSON.stringify(params.data, filterNullValues),
-        }).then(responses => ({
-          data: responses.map(({ json }) => json),
-        }))
-      )
-    );
+    if ("delete" in res) {
+      return Promise.all(
+        params.ids.map(id => {
+          const del = res["delete"](id);
+          const homeserver_url = homeserver + del.endpoint;
+          return jsonClient(homeserver_url, {
+            method: del.method,
+            body: JSON.stringify(del.body),
+          });
+        })
+      ).then(responses => ({
+        data: responses.map(({ json }) => json),
+      }));
+    } else {
+      const homeserver_url = homeserver + res.path;
+      return Promise.all(
+        params.ids.map(id =>
+          jsonClient(`${homeserver_url}/${id}`, {
+            method: "DELETE",
+            body: JSON.stringify(params.data, filterNullValues),
+          })
+        )
+      ).then(responses => ({
+        data: responses.map(({ json }) => json),
+      }));
+    }
   },
 };