Index: engine/src/main/java/org/hippoecm/frontend/plugins/login/RememberMeLoginPlugin.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- engine/src/main/java/org/hippoecm/frontend/plugins/login/RememberMeLoginPlugin.java	(revision 32720)
+++ engine/src/main/java/org/hippoecm/frontend/plugins/login/RememberMeLoginPlugin.java	(revision )
@@ -15,40 +15,40 @@
  */
 package org.hippoecm.frontend.plugins.login;
 
-import java.io.IOException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.Locale;
-
-import javax.jcr.LoginException;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.NameCallback;
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.servlet.http.Cookie;
-
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RequestCycle;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.protocol.http.WebResponse;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.model.UserCredentials;
 import org.hippoecm.frontend.plugin.IPluginContext;
 import org.hippoecm.frontend.plugin.config.IPluginConfig;
 import org.hippoecm.frontend.session.PluginUserSession;
-import org.hippoecm.frontend.session.UserSession;
 import org.hippoecm.repository.api.HippoNodeType;
+import org.hippoecm.repository.api.Workflow;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.jcr.LoginException;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.servlet.http.Cookie;
+import java.io.IOException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Locale;
+
 public class RememberMeLoginPlugin extends LoginPlugin {
     @SuppressWarnings("unused")
     private final static String SVN_ID = "$Id: $";
@@ -167,6 +167,7 @@
                 }
             }
             boolean success = userSession.login(new UserCredentials(this));
+            Logger wokflowLogger = LoggerFactory.getLogger(Workflow.class);
             if (success) {
                 ConcurrentLoginFilter.validateSession(((WebRequest)SignInForm.this.getRequest()).getHttpServletRequest().getSession(true), usernameTextField.getDefaultModelObjectAsString(), false);
                 if (rememberme) {
@@ -192,6 +193,16 @@
                         }
                     }
                 }
+                HippoEvent event = new HippoEvent().user(getSession()).action("login")
+                        .category(HippoEvent.CATEGORY_SECURITY)
+                        .message(username + " logged in");
+                AuditLogger.getLogger().info(event.toString());
+            }else{
+                HippoEvent event = new HippoEvent().user(getSession()).action("login")
+                        .category(HippoEvent.CATEGORY_SECURITY)
+                        .result("failure")
+                        .message(username + " failed to login");
+                AuditLogger.getLogger().info(event.toString());
             }
             userSession.setLocale(new Locale(selectedLocale));
             redirect(success);
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java	(revision )
@@ -34,8 +34,9 @@
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.validator.StringValidator;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
-import org.hippoecm.frontend.session.UserSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -75,8 +76,10 @@
                 String groupname = group.getGroupname();
                 try {
                     group.create();
-                    log.info("Group '" + groupname + "' created by "
-                            + ((UserSession) Session.get()).getJcrSession().getUserID());
+                    HippoEvent event = new HippoEvent().user(getSession()).action("create-group")
+                            .category(HippoEvent.CATEGORY_GROUP_MANAGEMENT)
+                            .message("added group " + groupname);
+                    AuditLogger.getLogger().info(event.toString());
                     GroupDataProvider.setDirty();
                     Session.get().info(getString("group-created", groupModel));
                     // one up
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java	(revision )
@@ -15,10 +15,6 @@
  */
 package org.hippoecm.frontend.plugins.cms.admin.users;
 
-import java.util.List;
-
-import javax.jcr.RepositoryException;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@@ -34,6 +30,8 @@
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
 import org.hippoecm.frontend.plugins.cms.admin.groups.DetachableGroup;
 import org.hippoecm.frontend.plugins.cms.admin.groups.Group;
@@ -41,6 +39,9 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.jcr.RepositoryException;
+import java.util.List;
+
 public class SetMembershipsPanel extends AdminBreadCrumbPanel {
     @SuppressWarnings("unused")
     private static final String SVN_ID = "$Id: SetMembershipsPanel.java 28204 2011-05-10 16:36:55Z jbloemendal $";
@@ -72,6 +73,10 @@
                         info(getString("user-membership-already-member", new DetachableGroup(selectedGroup)));
                     } else {
                         selectedGroup.addMembership(user.getUsername());
+                       HippoEvent event = new HippoEvent().user(getSession()).action("add-user-to-group")
+                                .category(HippoEvent.CATEGORY_GROUP_MANAGEMENT)
+                                .message("added user " + user.getUsername() + " to group " + selectedGroup.getGroupname());
+                        AuditLogger.getLogger().info(event.toString());
                         info(getString("user-membership-added", new DetachableGroup(selectedGroup)));
                         localList.removeAll();
                     }
@@ -147,6 +152,10 @@
                 public void onClick(AjaxRequestTarget target) {
                     try {
                         model.getGroup().removeMembership(user.getUsername());
+                        HippoEvent event = new HippoEvent().user(getSession()).action("remove-user-from-group")
+                                .category(HippoEvent.CATEGORY_GROUP_MANAGEMENT)
+                                .message("removed user " + user.getUsername() + " from group " + model.getGroup().getGroupname());
+                        AuditLogger.getLogger().info(event.toString());
                         info(getString("user-membership-removed", model));
                         localList.removeAll();
                     } catch (RepositoryException e) {
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java	(revision )
@@ -15,11 +15,6 @@
  */
 package org.hippoecm.frontend.plugins.cms.admin.groups;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jcr.RepositoryException;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.breadcrumb.IBreadCrumbModel;
@@ -30,11 +25,9 @@
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.model.StringResourceModel;
+import org.apache.wicket.model.*;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
 import org.hippoecm.frontend.plugins.cms.admin.users.User;
 import org.hippoecm.frontend.plugins.cms.admin.users.UserDataProvider;
@@ -43,6 +36,10 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.jcr.RepositoryException;
+import java.util.ArrayList;
+import java.util.List;
+
 public class SetMembersPanel extends AdminBreadCrumbPanel {
     @SuppressWarnings("unused")
     private static final String SVN_ID = "$Id: SetMembersPanel.java 28204 2011-05-10 16:36:55Z jbloemendal $";
@@ -89,6 +86,10 @@
                                 info(getString("group-member-already-member", model));
                             } else {
                                 group.addMembership(user.getUsername());
+                                HippoEvent event = new HippoEvent().user(getSession()).action("add-user-to-group")
+                                        .category(HippoEvent.CATEGORY_GROUP_MANAGEMENT)
+                                        .message("added user " + user.getUsername() + " to group " + group.getGroupname());
+                                AuditLogger.getLogger().info(event.toString());
                                 info(getString("group-member-added", model));
                                 localList.removeAll();
                             }
@@ -133,6 +134,10 @@
                 public void onClick(AjaxRequestTarget target) {
                     try {
                         group.removeMembership(username);
+                        HippoEvent event = new HippoEvent().user(getSession()).action("remove-user-from-group")
+                                .category(HippoEvent.CATEGORY_GROUP_MANAGEMENT)
+                                .message("removed user " + username + " from group " + group.getGroupname());
+                        AuditLogger.getLogger().info(event.toString());
                         info(getString("group-member-removed", null));
                         localList.removeAll();
                     } catch (RepositoryException e) {
Index: api/src/main/java/org/hippoecm/audit/HippoEvent.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- api/src/main/java/org/hippoecm/audit/HippoEvent.java	(revision )
+++ api/src/main/java/org/hippoecm/audit/HippoEvent.java	(revision )
@@ -0,0 +1,88 @@
+package org.hippoecm.audit;
+
+
+import net.sf.json.JSONObject;
+import org.apache.wicket.Session;
+import org.hippoecm.frontend.session.UserSession;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Audit event is wrapper class over JSON object to hide json specific implementation
+ * It contains some of default categories of auditing
+ */
+public class HippoEvent {
+
+    public static final String CATEGORY_USER_MANAGEMENT = "user-management";
+    public static final String CATEGORY_GROUP_MANAGEMENT = "group-management";
+    public static final String CATEGORY_PERMISSIONS_MANAGEMENT = "permissions-management";
+    public static final String CATEGORY_SECURITY = "security";
+
+    public static final String APPLICATION = "application";
+    public static final String RESULT = "result";
+    public static final String USER = "user";
+    public static final String ACTION = "action";
+    public static final String CATEGORY = "category";
+    public static final String MESSAGE = "message";
+
+
+    private Map<String,Object> values = new HashMap<String, Object>();
+    
+
+
+    public HippoEvent() {
+        values.put(APPLICATION,"cms");
+        values.put(RESULT,"success");
+    }
+
+    public HippoEvent user(String user) {
+        values.put(USER, user);
+        return this;
+    }
+
+    public HippoEvent user(Session session) {
+        values.put(USER, ((UserSession)session.get()).getJcrSession().getUserID());
+        return this;
+    }
+
+    public HippoEvent action(String action) {
+        values.put(ACTION, action);
+        return this;
+    }
+
+    public HippoEvent category(String category) {
+        values.put(CATEGORY, category);
+        return this;
+    }
+
+    public HippoEvent application(String application) {
+        values.put(APPLICATION, application);
+        return this;
+    }
+
+    public HippoEvent result(String result) {
+        values.put(RESULT, result);
+        return this;
+    }
+
+    public HippoEvent message(String message) {
+        values.put(MESSAGE, message);
+        return this;
+    }
+
+    public HippoEvent put(String key,Object value) {
+        values.put(key, value);
+        return this;
+    }
+
+
+    @Override
+    public String toString()
+    {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.putAll(values);
+        return jsonObject.toString();
+
+    }
+}
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java	(revision )
@@ -31,13 +31,14 @@
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.dialog.IDialogService;
 import org.hippoecm.frontend.plugin.IPluginContext;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
 import org.hippoecm.frontend.plugins.cms.admin.widgets.AjaxLinkLabel;
 import org.hippoecm.frontend.plugins.cms.admin.widgets.ConfirmDeleteDialog;
 import org.hippoecm.frontend.plugins.standards.panelperspective.breadcrumb.PanelPluginBreadCrumbLink;
-import org.hippoecm.frontend.session.UserSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -116,8 +117,10 @@
         String groupname = group.getGroupname();
         try {
             group.delete();
-            log.info("Group '" + groupname + "' deleted by "
-                    + ((UserSession) Session.get()).getJcrSession().getUserID());
+            HippoEvent event = new HippoEvent().user(getSession()).action("delete-group")
+                    .category(HippoEvent.CATEGORY_GROUP_MANAGEMENT)
+                    .message("deleted group " + groupname);
+            AuditLogger.getLogger().info(event.toString());
             GroupDataProvider.setDirty();
             Session.get().info(getString("group-removed", model));
             // one up
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java	(revision )
@@ -37,21 +37,20 @@
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.validation.validator.EmailAddressValidator;
 import org.apache.wicket.validation.validator.StringValidator;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.plugin.IPluginContext;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
 import org.hippoecm.frontend.plugins.cms.admin.password.validation.IPasswordValidationService;
 import org.hippoecm.frontend.plugins.cms.admin.password.validation.PasswordValidationStatus;
-import org.hippoecm.frontend.plugins.cms.admin.validators.PasswordStrengthValidator;
 import org.hippoecm.frontend.plugins.cms.admin.validators.UsernameValidator;
-import org.hippoecm.frontend.session.UserSession;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class CreateUserPanel extends AdminBreadCrumbPanel {
     @SuppressWarnings("unused")
     private static final String SVN_ID = "$Id: CreateUserPanel.java 29864 2011-08-25 11:38:45Z uhommes $";
     private static final long serialVersionUID = 1L;
-    private static final Logger log = LoggerFactory.getLogger(CreateUserPanel.class);
+    private static final Logger log = org.slf4j.LoggerFactory.getLogger(CreateUserPanel.class);
 
     private final Form form;
     
@@ -133,8 +132,10 @@
                     try {
                         user.create();
                         user.savePassword(password);
-                        log.info("User '" + username + "' created by "
-                                + ((UserSession) Session.get()).getJcrSession().getUserID());
+                        HippoEvent event = new HippoEvent().user(getSession()).action("create-user")
+                                .category(HippoEvent.CATEGORY_USER_MANAGEMENT)
+                                .message("created user " + username);
+                        AuditLogger.getLogger().info(event.toString());
                         UserDataProvider.setDirty();
                         Session.get().info(getString("user-created", userModel));
                         // one up
Index: api/src/main/java/org/hippoecm/audit/AuditLogger.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- api/src/main/java/org/hippoecm/audit/AuditLogger.java	(revision )
+++ api/src/main/java/org/hippoecm/audit/AuditLogger.java	(revision )
@@ -0,0 +1,16 @@
+package org.hippoecm.audit;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class AuditLogger {
+
+    private static final String AUDIT_LOGGER = "org.onehippo.audit";
+    private static final Logger log = LoggerFactory.getLogger(AUDIT_LOGGER);
+
+    public static Logger getLogger() {
+        return log;
+    }
+}
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java	(revision )
@@ -15,11 +15,6 @@
  */
 package org.hippoecm.frontend.plugins.cms.admin.users;
 
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.RepositoryException;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.Session;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -32,6 +27,8 @@
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.dialog.IDialogService;
 import org.hippoecm.frontend.plugin.IPluginContext;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
@@ -39,10 +36,13 @@
 import org.hippoecm.frontend.plugins.cms.admin.widgets.AjaxLinkLabel;
 import org.hippoecm.frontend.plugins.cms.admin.widgets.ConfirmDeleteDialog;
 import org.hippoecm.frontend.plugins.standards.panelperspective.breadcrumb.PanelPluginBreadCrumbLink;
-import org.hippoecm.frontend.session.UserSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.jcr.RepositoryException;
+import java.util.List;
+import java.util.Map;
+
 public class ViewUserPanel extends AdminBreadCrumbPanel {
     @SuppressWarnings("unused")
     private static final String SVN_ID = "$Id: ViewUserPanel.java 32601 2012-01-21 09:03:42Z fvlankvelt $";
@@ -173,8 +173,10 @@
                 dg.getGroup().removeMembership(username);
             }
             user.delete();
-            log.info("User '" + username + "' deleted by "
-                    + ((UserSession) Session.get()).getJcrSession().getUserID());
+            HippoEvent event = new HippoEvent().user(getSession()).action("delete-user")
+                    .category(HippoEvent.CATEGORY_USER_MANAGEMENT)
+                    .message("deleted user " + username);
+            AuditLogger.getLogger().info(event.toString());
             UserDataProvider.setDirty();
             Session.get().info(getString("user-removed", model));
             // one up
Index: perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java	(revision 32720)
+++ perspectives/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java	(revision )
@@ -34,6 +34,8 @@
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
+import org.hippoecm.audit.HippoEvent;
+import org.hippoecm.audit.AuditLogger;
 import org.hippoecm.frontend.plugins.cms.admin.AdminBreadCrumbPanel;
 import org.hippoecm.frontend.plugins.cms.admin.domains.Domain;
 import org.hippoecm.frontend.plugins.cms.admin.groups.Group;
@@ -70,8 +72,10 @@
             protected void onSubmit(AjaxRequestTarget target, Form form) {
                 try {
                     domain.addGroupToRole(selectedRole, selectedGroup.getGroupname());
-                    info(getString("permissions-group-added", model));
-                    log.info("Grant " + selectedRole + " role to group " + selectedGroup.getGroupname() + " for domain " + domain.getName());
+                    HippoEvent event = new HippoEvent().user(getSession()).action("grant-role")
+                            .category(HippoEvent.CATEGORY_PERMISSIONS_MANAGEMENT)
+                            .message("grant " + selectedRole + " role to group " + selectedGroup.getGroupname() + " for domain " + domain.getName());
+                    AuditLogger.getLogger().info(event.toString());
                     this.removeAll();
                     target.addComponent(SetPermissionsPanel.this);
                 } catch (RepositoryException e) {
@@ -129,6 +133,11 @@
                 public void onClick(AjaxRequestTarget target) {
                     try {
                         domain.removeGroupFromRole(role, group);
+                        HippoEvent event = new HippoEvent().user(getSession()).action("revoke-role")
+                                .category(HippoEvent.CATEGORY_PERMISSIONS_MANAGEMENT)
+                                .message("revoke " + selectedRole + " role from group " + group + " for domain " + domain.getName());
+                        AuditLogger.getLogger().info(event.toString());
+
                         info(getString("permissions-group-removed", model));
                         log.info("Revoke " + selectedRole + " role from group " + group + " for domain " + domain.getName());
                         this.removeAll();
