diff --git a/pkg/model/audit_event.go b/pkg/model/audit_event.go
new file mode 100644
index 0000000..998f76d
--- /dev/null
+++ b/pkg/model/audit_event.go
@@ -0,0 +1,53 @@
+package model
+
+import (
+	"encoding/json"
+	"time"
+)
+
+type AuditEventType int32
+
+// User clicked "Submit", "Accept" etc
+const AuditEventTypeAction    AuditEventType = 0
+type AuditEventDataAction struct {
+	TargetStatus uint32 `json:"target_status"`
+}
+
+// User wrote a comment
+const AuditEventTypeComment   AuditEventType = 1
+type AuditEventDataComment struct {
+	Comment string `json:"comment"`
+}
+
+// User changed Model
+const AuditEventTypeChangeModel AuditEventType = 2
+type AuditEventDataChangeModel struct {
+	OldModelID      uint64 `json:"old_model_id"`
+	OldModelVersion uint64 `json:"old_model_version"`
+	NewModelID      uint64 `json:"new_model_id"`
+	NewModelVersion uint64 `json:"new_model_version"`
+}
+// Validator validates model
+const AuditEventTypeChangeValidatedModel AuditEventType = 3
+type AuditEventDataChangeValidatedModel struct {
+	ValidatedModelID      uint64 `json:"validated_model_id"`
+	ValidatedModelVersion uint64 `json:"validated_model_version"`
+}
+
+// User changed DisplayName / Creator
+const AuditEventTypeChangeDisplayName AuditEventType = 4
+const AuditEventTypeChangeCreator AuditEventType = 5
+type AuditEventDataChangeName struct {
+	OldName string `json:"old_name"`
+	NewName string `json:"new_name"`
+}
+
+type AuditEvent struct {
+	ID           int64 `gorm:"primaryKey"`
+	CreatedAt    time.Time
+	User         uint64
+	ResourceType ResourceType // is this a submission or is it a mapfix
+	ResourceID   int64 // submission / mapfix / map ID
+	EventType    AuditEventType
+	EventData    json.RawMessage `gorm:"type:jsonb"`
+}