diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/caveat-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/caveat-context.xml
index 5543a7604d..10fe39ed05 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/caveat-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/caveat-context.xml
@@ -30,4 +30,48 @@
+
+
+
+
+
+
+
+ org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatSchemeService
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${server.transaction.mode.default}
+
+
+
+
+
+
+
+ org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatSchemeService.existsCaveatGroup=ACL_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatSchemeService.getCaveatGroup=ACL_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatSchemeService.getCaveatGroups=ACL_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatSchemeService.*=ACL_DENY
+
+
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/scheme/CaveatSchemeService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/scheme/CaveatSchemeService.java
new file mode 100644
index 0000000000..badeffd017
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/scheme/CaveatSchemeService.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2005-2015 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.caveat.scheme;
+
+import java.util.Set;
+
+public interface CaveatSchemeService
+{
+ /**
+ * Indicates whether a named caveat group exists or not.
+ */
+ boolean existsCaveatGroup(String id);
+
+ /**
+ * Gets a set of all the available caveat groups
+ */
+ Set getCaveatGroups();
+
+ /**
+ * Gets a caveat group by its unique id.
+ */
+ CaveatGroup getCaveatGroup(String id);
+}
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/scheme/CaveatSchemeServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/scheme/CaveatSchemeServiceImpl.java
new file mode 100644
index 0000000000..a086c85f7f
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/caveat/scheme/CaveatSchemeServiceImpl.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2005-2015 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+
+package org.alfresco.module.org_alfresco_module_rm.caveat.scheme;
+
+import org.alfresco.module.org_alfresco_module_rm.caveat.dao.CaveatDAOInterface;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class CaveatSchemeServiceImpl implements CaveatSchemeService
+{
+ private CaveatDAOInterface caveatDAO;
+
+ public void setCaveatDAO(CaveatDAOInterface caveatDAO)
+ {
+ this.caveatDAO = caveatDAO;
+ }
+
+ @Override public boolean existsCaveatGroup(String id)
+ {
+ return caveatDAO.getCaveatGroups().containsKey(id);
+ }
+
+ @Override public Set getCaveatGroups()
+ {
+ return new HashSet<>(caveatDAO.getCaveatGroups().values());
+ }
+
+ @Override public CaveatGroup getCaveatGroup(String id)
+ {
+ return caveatDAO.getCaveatGroups().get(id);
+ }
+}
\ No newline at end of file