diff --git a/src/events/editEvent.js b/src/events/editEvent.js
index 77bf2cbc58003e6d066f1aa1312cefb9e8ef6720..3e07b740d17005af9efbb6e3c4169c7cc031bb2b 100644
--- a/src/events/editEvent.js
+++ b/src/events/editEvent.js
@@ -1,10 +1,13 @@
 import m from 'mithril';
 import { styler } from 'polythene-core-css';
-import { RadioGroup, Switch, Dialog, Button, Tabs, Icon } from 'polythene-mithril';
-import { FileInput } from 'amiv-web-ui-components';
+import {
+  RadioGroup, Switch, Dialog, Button, Tabs, Icon, TextField,
+} from 'polythene-mithril';
+import { FileInput, ListSelect, DatalistController } from 'amiv-web-ui-components';
 import { TabsCSS, ButtonCSS } from 'polythene-css';
 // eslint-disable-next-line import/extensions
 import { apiUrl, ownUrl } from 'networkConfig';
+import { ResourceHandler } from '../auth';
 import { colors } from '../style';
 import { loadingScreen } from '../layout';
 import { icons } from '../views/elements';
@@ -55,6 +58,11 @@ export default class newEvent extends EditView {
     super(vnode);
     this.currentpage = 1;
 
+    // Create a usercontroller to handle the moderator field
+    this.userHandler = new ResourceHandler('users', ['firstname', 'lastname', 'email', 'nethz']);
+    this.userController = new DatalistController((query, search) =>
+      this.userHandler.get({ search, ...query }));
+
     // check whether the user has the right to create events or can only propose
     this.rightSubmit = !m.route.get().startsWith('/proposeevent');
 
@@ -171,6 +179,9 @@ export default class newEvent extends EditView {
     else this.form.data.priority = 1;
     delete this.form.data.high_priority;
 
+    // Change moderator from user object to user id
+    if (this.form.data.moderator) this.form.data.moderator = this.form.data.moderator._id;
+
     // if spots is not set, also remove 'allow_email_signup'
     if (!('spots' in this.form.data) && 'allow_email_signup' in this.form.data
         && !this.form.data.allow_email_signup) {
@@ -241,7 +252,7 @@ export default class newEvent extends EditView {
     console.log(this.form.errors, this.form.valid);
 
     // Define the number of Tabs and their titles
-    const titles = ['Event Description', 'When and Where?', 'Signups', 'Advertisement'];
+    const titles = ['Event Description', 'When and Where?', 'Signups', 'Internal Info'];
     if (this.rightSubmit) titles.push('Images');
     // Data fields of the event in the different tabs. Ordered the same way as the titles
     const keysPages = [[
@@ -254,7 +265,7 @@ export default class newEvent extends EditView {
     ],
     ['time_start', 'time_end', 'location'],
     ['price', 'spots', 'time_register_start', 'time_register_end'],
-    ['time_advertising_start', 'time_advertising_end'],
+    ['moderator', 'time_advertising_start', 'time_advertising_end'],
     [],
     ];
     // Look which Tabs have errors
@@ -448,10 +459,28 @@ export default class newEvent extends EditView {
           ...this.hasregistration && this.form.renderSchema(['allow_email_signup']),
           this.hasregistration && radioButtonSelectionMode,
         ]),
-        // page 4: advertisement
+        // PAGE 4: Internal Info
         m('div', {
           style: { display: (this.currentpage === 4) ? 'block' : 'none' },
         }, [
+          m('div', { style: { display: 'flex', 'margin-top': '5px' } }, [
+            m(TextField, {
+              label: 'Moderator: ',
+              disabled: true,
+              style: { width: '200px' },
+              help: 'Can edit the event and see signups.',
+            }),
+            m('div', { style: { 'flex-grow': 1 } }, m(ListSelect, {
+              controller: this.userController,
+              selection: this.form.data.moderator,
+              listTileAttrs: user => Object.assign(
+                {},
+                { title: `${user.firstname} ${user.lastname}` },
+              ),
+              selectedText: user => `${user.firstname} ${user.lastname}`,
+              onSelect: (data) => { this.form.data.moderator = data; },
+            })),
+          ]),
           ...this.form.renderSchema(['time_advertising_start', 'time_advertising_end']),
           ...this.form.renderSchema(['show_website', 'show_announce', 'show_infoscreen']),
           // pritority update
diff --git a/src/events/item.js b/src/events/item.js
index 1ea3647c21730f0e2714b2ce6f01c270b042883a..aefec454b207001e405ee7172012917c09d69da3 100644
--- a/src/events/item.js
+++ b/src/events/item.js
@@ -6,7 +6,7 @@ import { loadingScreen } from '../layout';
 
 export default class EventItem {
   constructor() {
-    this.controller = new ItemController('events');
+    this.controller = new ItemController('events', { moderator: 1 });
   }
 
   view() {
diff --git a/src/events/viewEvent.js b/src/events/viewEvent.js
index ab0195a547287f7a175de47393d86147d3e41e44..4c053bc0d1fb0f581876debd7312df530707ad6e 100644
--- a/src/events/viewEvent.js
+++ b/src/events/viewEvent.js
@@ -342,6 +342,11 @@ export default class viewEvent extends ItemView {
           title: 'Time',
           style: stdMargin,
         }, `${dateFormatter(this.data.time_start)} - ${dateFormatter(this.data.time_end)}`),
+        this.data.moderator && m(Property, {
+          title: 'Moderator',
+          style: stdMargin,
+        }, m.trust(`${this.data.moderator.firstname} ${this.data.moderator.lastname}
+         (<a href='mailto:${this.data.moderator.email}'>${this.data.moderator.email}</a>)`)),
       ]),
       // everything else is not listed in DropdownCards, which open only on request
       m('div.viewcontainer', [
diff --git a/src/style.js b/src/style.js
index 4f9e3aff4b9945c5c182b949b3cd0b16481c529d..2fdd69929030b7278c2c27c723c856c8fa39f8b2 100644
--- a/src/style.js
+++ b/src/style.js
@@ -72,6 +72,9 @@ const style = [
     p: {
       margin: '0',
     },
+    a: {
+      color: 'rgba(0, 0, 0, 0.87)',
+    },
   },
 ];
 styler.add('containers', style);