From dfc8155acb41528ae147fb1e7dd13b47a1390cd6 Mon Sep 17 00:00:00 2001
From: hg <none@none>
Date: Sun, 29 May 2016 10:34:19 +0200
Subject: [PATCH] OO-2041: upgrade hibernate and infinispan, update mapping to
 use TableGenerator with legacy-hilo optimizer

---
 pom.xml                                       |   4 +-
 .../de/bps/olat/modules/cl/Checklist.hbm.xml  |   9 +-
 .../de/bps/olat/modules/cl/Checkpoint.hbm.xml |   9 +-
 .../olat/modules/cl/CheckpointResult.hbm.xml  |   9 +-
 .../basesecurity/AuthenticationImpl.hbm.xml   |   9 +-
 .../olat/basesecurity/IdentityImpl.hbm.xml    |   9 +-
 .../org/olat/basesecurity/IdentityShort.java  |  10 +-
 .../olat/basesecurity/NamedGroupImpl.hbm.xml  |   9 +-
 .../org/olat/basesecurity/PolicyImpl.hbm.xml  |   9 +-
 .../basesecurity/SecurityGroupImpl.hbm.xml    |   9 +-
 .../SecurityGroupMembershipImpl.hbm.xml       |   9 +-
 .../olat/basesecurity/model/GrantImpl.java    |  10 +-
 .../olat/basesecurity/model/GroupImpl.java    |  10 +-
 .../model/GroupMembershipImpl.java            |  10 +-
 .../model/CalendarUserConfiguration.java      |  10 +-
 .../calendar/model/ImportedCalendar.java      |  10 +-
 .../calendar/model/ImportedToCalendar.java    |  10 +-
 .../coordinate/cluster/lock/LockImpl.hbm.xml  |   9 +-
 .../info/model/InfoMessageImpl.hbm.xml        |   9 +-
 .../commons/lifecycle/LifeCycleEntry.hbm.xml  |   9 +-
 .../JpaInfinispanRegionFactory.java           |   4 +-
 .../model/UserCommentImpl.java                |  10 +-
 .../model/UserRatingImpl.java                 |  10 +-
 .../services/lock/pessimistic/PLockImpl.java  |  10 +-
 .../services/mark/impl/MarkImpl.hbm.xml       |  13 ++-
 .../notifications/model/PublisherImpl.java    |  10 +-
 .../notifications/model/SubscriberImpl.java   |  10 +-
 .../services/tagging/model/TagImpl.hbm.xml    |   9 +-
 .../taskexecutor/model/PersistentTask.java    |  10 +-
 .../model/PersistentTaskModifier.java         |  12 ++-
 .../mapper/model/PersistedMapper.java         |  10 +-
 .../logging/activity/LoggingObject.hbm.xml    |   9 +-
 .../olat/core/util/mail/model/DBMail.hbm.xml  |  18 +++-
 .../util/mail/model/DBMailAttachment.hbm.xml  |   9 +-
 .../util/mail/model/DBMailRecipient.hbm.xml   |   9 +-
 .../assessment/model/AssessmentModeImpl.java  |  10 +-
 .../model/AssessmentModeToAreaImpl.java       |  10 +-
 .../model/AssessmentModeToGroupImpl.java      |  10 +-
 .../assessment/model/UserCourseInfosImpl.java |  10 +-
 .../model/UserEfficiencyStatementImpl.hbm.xml |  27 ++++-
 .../UserEfficiencyStatementRepoImpl.java      |  10 +-
 .../model/AbstractCertificate.java            |  10 +-
 .../model/CertificateLightImpl.java           |  10 +-
 .../model/CertificateTemplateImpl.java        |  10 +-
 .../course/db/impl/CourseDBEntryImpl.hbm.xml  |   9 +-
 .../olat/course/nodes/cl/model/DBCheck.java   |  10 +-
 .../course/nodes/cl/model/DBCheckbox.java     |  10 +-
 .../olat/course/nodes/gta/model/TaskImpl.java |  10 +-
 .../course/nodes/gta/model/TaskLightImpl.java |  10 +-
 .../course/nodes/gta/model/TaskListImpl.java  |  10 +-
 .../projectbroker/datamodel/Project.hbm.xml   |   9 +-
 .../datamodel/ProjectBroker.hbm.xml           |   9 +-
 .../statistic/homeorg/HomeOrgStat.hbm.xml     |   9 +-
 .../statistic/orgtype/OrgTypeStat.hbm.xml     |   9 +-
 .../studybranch3/StudyBranch3Stat.hbm.xml     |   9 +-
 .../studylevel/StudyLevelStat.hbm.xml         |   9 +-
 .../org/olat/group/BusinessGroupImpl.java     |  10 +-
 .../org/olat/group/area/BGAreaImpl.hbm.xml    |  14 ++-
 .../group/area/BGtoAreaRelationImpl.hbm.xml   |  14 ++-
 .../BusinessGroupMembershipViewImpl.java      |  10 +-
 .../group/model/BusinessGroupShortImpl.java   |  10 +-
 .../group/model/BusinessGroupToSearch.java    |  10 +-
 .../org/olat/group/model/ContactView.java     |  10 +-
 .../olat/group/model/ContactViewExtended.java |  10 +-
 .../group/model/GroupToBusinessGroup.java     |  10 +-
 .../model/RepositoryEntryToBusinessGroup.java |  10 +-
 .../olat/ims/lti/model/LTIOutcomeImpl.java    |  12 ++-
 .../java/org/olat/ims/qti/QTIResult.hbm.xml   |   9 +-
 .../org/olat/ims/qti/QTIResultSet.hbm.xml     |   9 +-
 .../statistics/model/QTIStatisticResult.java  |  10 +-
 .../model/QTIStatisticResultSet.java          |  10 +-
 .../model/jpa/AssessmentItemSessionImpl.java  |   5 +-
 .../model/jpa/AssessmentResponseImpl.java     |   5 +-
 .../model/jpa/AssessmentTestMarksImpl.java    |   5 +-
 .../model/jpa/AssessmentTestSessionImpl.java  |   5 +-
 .../model/ImPreferencesImpl.java              |  10 +-
 .../model/InstantMessageImpl.java             |  10 +-
 .../model/InstantMessageNotificationImpl.java |  12 ++-
 .../model/RosterEntryImpl.java                |  10 +-
 .../model/RosterEntryView.java                |  10 +-
 .../assessment/model/AssessmentEntryImpl.java |   5 +-
 .../org/olat/modules/fo/model/ForumImpl.java  |  10 +-
 .../olat/modules/fo/model/MessageImpl.java    |  10 +-
 .../modules/fo/model/MessageLightImpl.java    |  10 +-
 .../modules/fo/model/MessagePeekviewImpl.java |  10 +-
 .../olat/modules/fo/model/MessageRefImpl.java |  10 +-
 .../modules/fo/model/MessageStatistics.java   |  10 +-
 .../modules/fo/model/ReadMessageImpl.java     |  10 +-
 .../gotomeeting/model/GoToMeetingImpl.java    |  10 +-
 .../gotomeeting/model/GoToOrganizerImpl.java  |  10 +-
 .../gotomeeting/model/GoToRegistrantImpl.java |  10 +-
 .../model/OpenMeetingsReference.hbm.xml       |   9 +-
 .../qpool/model/BusinessGroupToItemView.java  |  12 ++-
 .../modules/qpool/model/CollectionToItem.java |  12 ++-
 .../qpool/model/ItemCollectionImpl.java       |  12 ++-
 .../olat/modules/qpool/model/PoolImpl.java    |  10 +-
 .../qpool/model/PoolItemShortView.java        |  10 +-
 .../olat/modules/qpool/model/PoolToItem.java  |  12 ++-
 .../qpool/model/QEducationalContext.java      |  12 ++-
 .../olat/modules/qpool/model/QItemType.java   |  12 ++-
 .../olat/modules/qpool/model/QLicense.java    |  12 ++-
 .../modules/qpool/model/QuestionItemImpl.java |  10 +-
 .../qpool/model/ResourceShareImpl.java        |  12 ++-
 .../qpool/model/TaxonomyLevelImpl.java        |  12 ++-
 .../modules/reminder/model/ReminderImpl.java  |  10 +-
 .../reminder/model/SentReminderImpl.java      |  10 +-
 .../video/model/VideoTranscodingImpl.java     |  10 +-
 src/main/java/org/olat/note/NoteImpl.hbm.xml  |   9 +-
 .../olat/portfolio/model/InvitationImpl.java  |  10 +-
 .../model/artefacts/AbstractArtefact.hbm.xml  |   9 +-
 .../model/notification/Notifications.hbm.xml  |  31 +++++-
 .../restriction/CollectRestriction.hbm.xml    |   9 +-
 .../EPStructureElementToGroupRelation.java    |  10 +-
 .../model/structel/StructureElement.hbm.xml   |  36 ++++++-
 .../java/org/olat/properties/Property.hbm.xml |   9 +-
 .../registration/TemporaryKeyImpl.hbm.xml     |   9 +-
 .../olat/repository/RepositoryEntry.hbm.xml   |   9 +-
 .../org/olat/repository/RepositoryEntry.java  |  10 +-
 .../repository/model/CatalogEntryImpl.hbm.xml |   9 +-
 .../model/RepositoryEntryLifecycle.java       |  10 +-
 .../model/RepositoryEntryLightImpl.java       |  10 +-
 .../model/RepositoryEntryMembership.java      |  10 +-
 .../model/RepositoryEntryStatistics.java      |  10 +-
 .../model/RepositoryEntryToGroupRelation.java |  10 +-
 .../olat/resource/OLATResourceImpl.hbm.xml    |   9 +-
 .../model/AbstractAccessMethod.java           |  10 +-
 .../accesscontrol/model/AccessMethod.hbm.xml  |   9 +-
 .../model/AccessTransactionImpl.java          |  10 +-
 .../accesscontrol/model/OfferAccessImpl.java  |  10 +-
 .../accesscontrol/model/OfferImpl.java        |  10 +-
 .../accesscontrol/model/OrderImpl.java        |  10 +-
 .../accesscontrol/model/OrderLineImpl.java    |  10 +-
 .../accesscontrol/model/OrderPartImpl.java    |  10 +-
 .../model/ResourceReservationImpl.java        |  10 +-
 .../paypal/model/PaypalTransaction.hbm.xml    |   9 +-
 .../resource/references/ReferenceImpl.java    |  10 +-
 .../olat/upgrade/model/BGAreaUpgrade.hbm.xml  |   9 +-
 .../upgrade/model/BGContext2Resource.hbm.xml  |   9 +-
 .../olat/upgrade/model/BGContextImpl.hbm.xml  |   9 +-
 .../upgrade/model/BGResourceRelation.hbm.xml  |   9 +-
 .../olat/upgrade/model/BookmarkImpl.hbm.xml   |   9 +-
 .../model/BusinessGroupUpgrade.hbm.xml        |   9 +-
 .../model/DBMailAttachmentData.hbm.xml        |   9 +-
 .../org/olat/upgrade/model/EPMapUpgrade.java  |  10 +-
 .../model/EPMapUpgradeToGroupRelation.java    |  10 +-
 .../olat/upgrade/model/InvitationUpgrade.java |  10 +-
 .../model/RepositoryEntryUpgrade.hbm.xml      |   9 +-
 ...RepositoryEntryUpgradeToGroupRelation.java |  10 +-
 src/main/java/org/olat/user/UserImpl.hbm.xml  |   9 +-
 .../database/mysql/alter_10_x_0_to_11_0_0.sql |  10 +-
 .../database/mysql/setupDatabase.sql          |  10 +-
 .../oracle/alter_10_x_0_to_11_0_0.sql         |  10 +-
 .../database/oracle/setupDatabase.sql         |  10 +-
 .../postgresql/alter_10_x_0_to_11_0_0.sql     |  10 +-
 .../database/postgresql/setupDatabase.sql     |  10 +-
 src/main/resources/infinispan-config.xml      | 101 +++++++-----------
 .../builder/infinispan-configs-local.xml      |  49 +++++++++
 .../infinispan/builder/infinispan-configs.xml |  49 +++++++++
 158 files changed, 1491 insertions(+), 283 deletions(-)
 create mode 100644 src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs-local.xml
 create mode 100644 src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs.xml

diff --git a/pom.xml b/pom.xml
index 1cc56a2f571..f67bc11eebe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,12 +65,12 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<targetJdk>1.8</targetJdk>
 		<org.springframework.version>3.2.16.RELEASE</org.springframework.version>
-		<org.hibernate.version>4.3.11.Final</org.hibernate.version>
+		<org.hibernate.version>5.1.0.Final</org.hibernate.version>
 		<com.sun.jersey.version>1.17.1</com.sun.jersey.version>
 		<jackson.version>1.9.2</jackson.version>
 		<org.mysql.version>5.1.38</org.mysql.version>
 		<org.postgresql.version>9.4.1207</org.postgresql.version>
-		<org.infinispan.version>7.2.3.Final</org.infinispan.version>
+		<org.infinispan.version>8.1.0.Final</org.infinispan.version>
 		<lucene.version>4.8.0</lucene.version>
 		<version.selenium>2.53.0</version.selenium>
 		<version.drone>2.0.0.Final</version.drone>
diff --git a/src/main/java/de/bps/olat/modules/cl/Checklist.hbm.xml b/src/main/java/de/bps/olat/modules/cl/Checklist.hbm.xml
index cbb1b74d2f5..1ab552c024f 100644
--- a/src/main/java/de/bps/olat/modules/cl/Checklist.hbm.xml
+++ b/src/main/java/de/bps/olat/modules/cl/Checklist.hbm.xml
@@ -4,7 +4,14 @@
 	<class name="de.bps.olat.modules.cl.Checklist" table="o_checklist">
 	
 		<id name="key" column="checklist_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 
 		<property  name="version" column="version" type="int" not-null="true" access="field"/>		
diff --git a/src/main/java/de/bps/olat/modules/cl/Checkpoint.hbm.xml b/src/main/java/de/bps/olat/modules/cl/Checkpoint.hbm.xml
index e5ecdf6ff65..fe84e2963ec 100644
--- a/src/main/java/de/bps/olat/modules/cl/Checkpoint.hbm.xml
+++ b/src/main/java/de/bps/olat/modules/cl/Checkpoint.hbm.xml
@@ -4,7 +4,14 @@
 	<class name="de.bps.olat.modules.cl.Checkpoint" table="o_checkpoint">
 	
 		<id name="key" column="checkpoint_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 
 		<property  name="version" column="version" type="int" not-null="true" access="field"/>		
diff --git a/src/main/java/de/bps/olat/modules/cl/CheckpointResult.hbm.xml b/src/main/java/de/bps/olat/modules/cl/CheckpointResult.hbm.xml
index c8f11303f39..8e49835bae0 100644
--- a/src/main/java/de/bps/olat/modules/cl/CheckpointResult.hbm.xml
+++ b/src/main/java/de/bps/olat/modules/cl/CheckpointResult.hbm.xml
@@ -4,7 +4,14 @@
 	<class name="de.bps.olat.modules.cl.CheckpointResult" table="o_checkpoint_results">
 	
 		<id name="key" column="checkpoint_result_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 		
 		<property  name="version" column="version" type="int" not-null="true" access="field"/>
diff --git a/src/main/java/org/olat/basesecurity/AuthenticationImpl.hbm.xml b/src/main/java/org/olat/basesecurity/AuthenticationImpl.hbm.xml
index be1f99bd0f9..dfbad561fd0 100644
--- a/src/main/java/org/olat/basesecurity/AuthenticationImpl.hbm.xml
+++ b/src/main/java/org/olat/basesecurity/AuthenticationImpl.hbm.xml
@@ -5,7 +5,14 @@
  <class name="org.olat.basesecurity.AuthenticationImpl" table="o_bs_authentication">
      <!-- the default columns -->
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
     <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/basesecurity/IdentityImpl.hbm.xml b/src/main/java/org/olat/basesecurity/IdentityImpl.hbm.xml
index 78aae148d44..a1d5ac52be5 100644
--- a/src/main/java/org/olat/basesecurity/IdentityImpl.hbm.xml
+++ b/src/main/java/org/olat/basesecurity/IdentityImpl.hbm.xml
@@ -5,7 +5,14 @@
   <class name="org.olat.basesecurity.IdentityImpl" table="o_bs_identity">
   	<!-- the default columns -->
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
     <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/basesecurity/IdentityShort.java b/src/main/java/org/olat/basesecurity/IdentityShort.java
index 8836293f573..262b4c90b51 100644
--- a/src/main/java/org/olat/basesecurity/IdentityShort.java
+++ b/src/main/java/org/olat/basesecurity/IdentityShort.java
@@ -30,6 +30,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 
 /**
@@ -54,7 +55,14 @@ public class IdentityShort implements Persistable, IdentityNames {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/basesecurity/NamedGroupImpl.hbm.xml b/src/main/java/org/olat/basesecurity/NamedGroupImpl.hbm.xml
index 77efc20f09d..0fe00fdef27 100644
--- a/src/main/java/org/olat/basesecurity/NamedGroupImpl.hbm.xml
+++ b/src/main/java/org/olat/basesecurity/NamedGroupImpl.hbm.xml
@@ -5,7 +5,14 @@
  <class name="org.olat.basesecurity.NamedGroupImpl" table="o_bs_namedgroup">
      <!-- the default columns -->
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/basesecurity/PolicyImpl.hbm.xml b/src/main/java/org/olat/basesecurity/PolicyImpl.hbm.xml
index 2a631652e34..a27707b5dd4 100644
--- a/src/main/java/org/olat/basesecurity/PolicyImpl.hbm.xml
+++ b/src/main/java/org/olat/basesecurity/PolicyImpl.hbm.xml
@@ -5,7 +5,14 @@
  <class name="org.olat.basesecurity.PolicyImpl" table="o_bs_policy">
      <!-- the default columns -->
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/basesecurity/SecurityGroupImpl.hbm.xml b/src/main/java/org/olat/basesecurity/SecurityGroupImpl.hbm.xml
index fb3f0f62647..3f809ad1858 100644
--- a/src/main/java/org/olat/basesecurity/SecurityGroupImpl.hbm.xml
+++ b/src/main/java/org/olat/basesecurity/SecurityGroupImpl.hbm.xml
@@ -5,7 +5,14 @@
  <class name="org.olat.basesecurity.SecurityGroupImpl" table="o_bs_secgroup">
      <!-- the default columns -->
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
     <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/basesecurity/SecurityGroupMembershipImpl.hbm.xml b/src/main/java/org/olat/basesecurity/SecurityGroupMembershipImpl.hbm.xml
index 3953895507f..ee527ac7b35 100644
--- a/src/main/java/org/olat/basesecurity/SecurityGroupMembershipImpl.hbm.xml
+++ b/src/main/java/org/olat/basesecurity/SecurityGroupMembershipImpl.hbm.xml
@@ -5,7 +5,14 @@
   <class name="org.olat.basesecurity.SecurityGroupMembershipImpl" table="o_bs_membership">
     <!-- the default columns -->
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
     <property name="version" access="field" column="version" insert="true" update="false" type="int"/>
diff --git a/src/main/java/org/olat/basesecurity/model/GrantImpl.java b/src/main/java/org/olat/basesecurity/model/GrantImpl.java
index af1807d9090..dcc1c2bb312 100644
--- a/src/main/java/org/olat/basesecurity/model/GrantImpl.java
+++ b/src/main/java/org/olat/basesecurity/model/GrantImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Grant;
 import org.olat.basesecurity.Group;
 import org.olat.core.id.Persistable;
@@ -58,7 +59,14 @@ public class GrantImpl implements Grant, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/basesecurity/model/GroupImpl.java b/src/main/java/org/olat/basesecurity/model/GroupImpl.java
index 0ac2a67af3c..0d75c3580c5 100644
--- a/src/main/java/org/olat/basesecurity/model/GroupImpl.java
+++ b/src/main/java/org/olat/basesecurity/model/GroupImpl.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.GroupMembership;
 import org.olat.core.id.Persistable;
@@ -50,7 +51,14 @@ public class GroupImpl implements Group, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java b/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java
index 3ef5d4c0c09..885616b5ab6 100644
--- a/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java
+++ b/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java
@@ -36,6 +36,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.GroupMembership;
 import org.olat.basesecurity.IdentityImpl;
@@ -67,7 +68,14 @@ public class GroupMembershipImpl implements GroupMembership, ModifiedInfo, Persi
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/commons/calendar/model/CalendarUserConfiguration.java b/src/main/java/org/olat/commons/calendar/model/CalendarUserConfiguration.java
index b6e30c20a2f..4a014597b18 100644
--- a/src/main/java/org/olat/commons/calendar/model/CalendarUserConfiguration.java
+++ b/src/main/java/org/olat/commons/calendar/model/CalendarUserConfiguration.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -57,7 +58,14 @@ public class CalendarUserConfiguration implements ModifiedInfo, Persistable  {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/commons/calendar/model/ImportedCalendar.java b/src/main/java/org/olat/commons/calendar/model/ImportedCalendar.java
index b12baa4a058..199fa9ab16f 100644
--- a/src/main/java/org/olat/commons/calendar/model/ImportedCalendar.java
+++ b/src/main/java/org/olat/commons/calendar/model/ImportedCalendar.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -59,7 +60,14 @@ public class ImportedCalendar implements ModifiedInfo, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/commons/calendar/model/ImportedToCalendar.java b/src/main/java/org/olat/commons/calendar/model/ImportedToCalendar.java
index a8c9937759d..e9f0889d19f 100644
--- a/src/main/java/org/olat/commons/calendar/model/ImportedToCalendar.java
+++ b/src/main/java/org/olat/commons/calendar/model/ImportedToCalendar.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
 
@@ -53,7 +54,14 @@ public class ImportedToCalendar implements ModifiedInfo, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/commons/coordinate/cluster/lock/LockImpl.hbm.xml b/src/main/java/org/olat/commons/coordinate/cluster/lock/LockImpl.hbm.xml
index ff18104e42a..442086b4ea8 100644
--- a/src/main/java/org/olat/commons/coordinate/cluster/lock/LockImpl.hbm.xml
+++ b/src/main/java/org/olat/commons/coordinate/cluster/lock/LockImpl.hbm.xml
@@ -7,7 +7,14 @@
 
 
 	<id name="key" type="long" column="lock_id" unsaved-value="null">
-		<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 	</id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/commons/info/model/InfoMessageImpl.hbm.xml b/src/main/java/org/olat/commons/info/model/InfoMessageImpl.hbm.xml
index c2c8b64ba05..8deb349cc00 100644
--- a/src/main/java/org/olat/commons/info/model/InfoMessageImpl.hbm.xml
+++ b/src/main/java/org/olat/commons/info/model/InfoMessageImpl.hbm.xml
@@ -6,7 +6,14 @@
   <class name="org.olat.commons.info.model.InfoMessageImpl" table="o_info_message">
 
 		<id name="key" type="long" column="info_id"	unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 	
 		<version name="version" access="field" column="version"/>
diff --git a/src/main/java/org/olat/commons/lifecycle/LifeCycleEntry.hbm.xml b/src/main/java/org/olat/commons/lifecycle/LifeCycleEntry.hbm.xml
index 6fc24da0158..8008c8faf7a 100644
--- a/src/main/java/org/olat/commons/lifecycle/LifeCycleEntry.hbm.xml
+++ b/src/main/java/org/olat/commons/lifecycle/LifeCycleEntry.hbm.xml
@@ -8,7 +8,14 @@
   <class name="org.olat.commons.lifecycle.LifeCycleEntry" table="o_lifecycle">
   	
     <id name="key" type="long" column="id" unsaved-value="null">
-      <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/core/commons/persistence/JpaInfinispanRegionFactory.java b/src/main/java/org/olat/core/commons/persistence/JpaInfinispanRegionFactory.java
index 0f7f812bccc..24ba209c70c 100644
--- a/src/main/java/org/olat/core/commons/persistence/JpaInfinispanRegionFactory.java
+++ b/src/main/java/org/olat/core/commons/persistence/JpaInfinispanRegionFactory.java
@@ -21,8 +21,8 @@ package org.olat.core.commons.persistence;
 
 import java.util.Properties;
 
+import org.hibernate.boot.spi.SessionFactoryOptions;
 import org.hibernate.cache.infinispan.InfinispanRegionFactory;
-import org.hibernate.cfg.Settings;
 import org.infinispan.transaction.lookup.DummyTransactionManagerLookup;
 
 /**
@@ -39,7 +39,7 @@ public class JpaInfinispanRegionFactory extends InfinispanRegionFactory {
 
 	@Override
 	protected org.infinispan.transaction.lookup.TransactionManagerLookup createTransactionManagerLookup(
-      Settings settings, Properties properties) {
+			SessionFactoryOptions settings, Properties properties) {
 		return new DummyTransactionManagerLookup();
 	}
 
diff --git a/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserCommentImpl.java b/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserCommentImpl.java
index 4830efa1071..247b0ca0785 100644
--- a/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserCommentImpl.java
+++ b/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserCommentImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -56,7 +57,14 @@ public class UserCommentImpl implements Persistable, CreateInfo, UserComment {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="comment_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserRatingImpl.java b/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserRatingImpl.java
index a4e806c6c7e..ae634901aba 100644
--- a/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserRatingImpl.java
+++ b/src/main/java/org/olat/core/commons/services/commentAndRating/model/UserRatingImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -56,7 +57,14 @@ public class UserRatingImpl implements Persistable, CreateInfo, UserRating {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="rating_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/core/commons/services/lock/pessimistic/PLockImpl.java b/src/main/java/org/olat/core/commons/services/lock/pessimistic/PLockImpl.java
index 21818593048..b5e9eeaa349 100644
--- a/src/main/java/org/olat/core/commons/services/lock/pessimistic/PLockImpl.java
+++ b/src/main/java/org/olat/core/commons/services/lock/pessimistic/PLockImpl.java
@@ -39,6 +39,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -59,7 +60,14 @@ public class PLockImpl implements PLock, CreateInfo, Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="plock_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/core/commons/services/mark/impl/MarkImpl.hbm.xml b/src/main/java/org/olat/core/commons/services/mark/impl/MarkImpl.hbm.xml
index cc0a9622107..13797623b98 100644
--- a/src/main/java/org/olat/core/commons/services/mark/impl/MarkImpl.hbm.xml
+++ b/src/main/java/org/olat/core/commons/services/mark/impl/MarkImpl.hbm.xml
@@ -4,11 +4,18 @@
 	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 <hibernate-mapping default-lazy="false">
   <class name="org.olat.core.commons.services.mark.impl.MarkImpl" table="o_mark">
-
+		
 		<id name="key" type="long" column="mark_id"	unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
-	
+		
 		<version name="version" access="field" column="version"/>
 		<property  name="creationDate" column="creationdate" type="timestamp" />
 	 	
diff --git a/src/main/java/org/olat/core/commons/services/notifications/model/PublisherImpl.java b/src/main/java/org/olat/core/commons/services/notifications/model/PublisherImpl.java
index 38f0641567d..fd7b44a4141 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/model/PublisherImpl.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/model/PublisherImpl.java
@@ -36,6 +36,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.commons.services.notifications.Publisher;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
@@ -54,7 +55,14 @@ public class PublisherImpl implements Publisher, CreateInfo, Persistable  {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="publisher_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/core/commons/services/notifications/model/SubscriberImpl.java b/src/main/java/org/olat/core/commons/services/notifications/model/SubscriberImpl.java
index 233402c94d3..73de3ae36af 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/model/SubscriberImpl.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/model/SubscriberImpl.java
@@ -41,6 +41,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.commons.services.notifications.Publisher;
 import org.olat.core.commons.services.notifications.Subscriber;
@@ -69,7 +70,14 @@ public class SubscriberImpl implements Subscriber, CreateInfo, Persistable  {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="publisher_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/core/commons/services/tagging/model/TagImpl.hbm.xml b/src/main/java/org/olat/core/commons/services/tagging/model/TagImpl.hbm.xml
index 42916092e1f..07b2cac91b8 100644
--- a/src/main/java/org/olat/core/commons/services/tagging/model/TagImpl.hbm.xml
+++ b/src/main/java/org/olat/core/commons/services/tagging/model/TagImpl.hbm.xml
@@ -6,7 +6,14 @@
   <class name="org.olat.core.commons.services.tagging.model.TagImpl" table="o_tag">
 		
 		<id name="key" type="long" column="tag_id"	unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 	
 		<version name="version" access="field" column="version"/>
diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTask.java b/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTask.java
index 45f8c1bdb84..0a03caa9f8b 100644
--- a/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTask.java
+++ b/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTask.java
@@ -37,6 +37,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.commons.services.taskexecutor.Task;
 import org.olat.core.commons.services.taskexecutor.TaskStatus;
@@ -66,7 +67,14 @@ public class PersistentTask implements Task, CreateInfo, ModifiedInfo, Persistab
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTaskModifier.java b/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTaskModifier.java
index 864ee80b61d..dd819480d27 100644
--- a/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTaskModifier.java
+++ b/src/main/java/org/olat/core/commons/services/taskexecutor/model/PersistentTaskModifier.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -57,8 +58,15 @@ public class PersistentTaskModifier implements CreateInfo, Persistable {
 	private static final long serialVersionUID = 7218761635450794698L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java b/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java
index d146813a543..851e79b49ba 100644
--- a/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java
+++ b/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
@@ -52,7 +53,14 @@ public class PersistedMapper implements CreateInfo, ModifiedInfo, Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/core/logging/activity/LoggingObject.hbm.xml b/src/main/java/org/olat/core/logging/activity/LoggingObject.hbm.xml
index d407060ed4b..e511bac679f 100644
--- a/src/main/java/org/olat/core/logging/activity/LoggingObject.hbm.xml
+++ b/src/main/java/org/olat/core/logging/activity/LoggingObject.hbm.xml
@@ -12,7 +12,14 @@
 <!--    Technical fields                                                                        -->
 <!--    ==================================================================================      -->
 		<id name="key"                  column="log_id"          type="long" unsaved-value="null">
-			<generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 		<property name="creationDate"   column="creationdate"    type="timestamp"/>
 		<property name="sourceClass"  type="string">
diff --git a/src/main/java/org/olat/core/util/mail/model/DBMail.hbm.xml b/src/main/java/org/olat/core/util/mail/model/DBMail.hbm.xml
index 06834f25fbd..99de69112a1 100644
--- a/src/main/java/org/olat/core/util/mail/model/DBMail.hbm.xml
+++ b/src/main/java/org/olat/core/util/mail/model/DBMail.hbm.xml
@@ -4,7 +4,14 @@
 
   <class name="org.olat.core.util.mail.model.DBMailImpl" mutable="false" table="o_mail">
     <id name="key" column="mail_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
 		<property name="creationDate" column="creationdate" type="timestamp" />
@@ -32,7 +39,14 @@
   
   <class name="org.olat.core.util.mail.model.DBMailLightImpl" mutable="false" table="o_mail">
     <id name="key" column="mail_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
 	<property name="creationDate" column="creationdate" type="timestamp" />
diff --git a/src/main/java/org/olat/core/util/mail/model/DBMailAttachment.hbm.xml b/src/main/java/org/olat/core/util/mail/model/DBMailAttachment.hbm.xml
index 7d4dfeb92bb..cca12945856 100644
--- a/src/main/java/org/olat/core/util/mail/model/DBMailAttachment.hbm.xml
+++ b/src/main/java/org/olat/core/util/mail/model/DBMailAttachment.hbm.xml
@@ -6,7 +6,14 @@
   
   <class name="org.olat.core.util.mail.model.DBMailAttachment" table="o_mail_attachment">  
     <id name="key" column="attachment_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 		<property name="creationDate" column="creationdate" type="timestamp" />
 		<property name="size" column="datas_size" type="long"/>
diff --git a/src/main/java/org/olat/core/util/mail/model/DBMailRecipient.hbm.xml b/src/main/java/org/olat/core/util/mail/model/DBMailRecipient.hbm.xml
index 99a64c0e2bf..e2a00f436cc 100644
--- a/src/main/java/org/olat/core/util/mail/model/DBMailRecipient.hbm.xml
+++ b/src/main/java/org/olat/core/util/mail/model/DBMailRecipient.hbm.xml
@@ -7,7 +7,14 @@
   <class name="org.olat.core.util.mail.model.DBMailRecipient" table="o_mail_recipient">
   	<!-- the default columns -->
     <id name="key" column="recipient_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     <property name="creationDate" column="creationdate" type="timestamp" />
     <property name="deleted" column="deleted" type="boolean" />
diff --git a/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java b/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java
index b0418d29c27..fb081e75f83 100644
--- a/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java
+++ b/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java
@@ -39,6 +39,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.core.util.StringHelper;
 import org.olat.course.assessment.AssessmentMode;
@@ -64,7 +65,14 @@ public class AssessmentModeImpl implements Persistable, AssessmentMode {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/assessment/model/AssessmentModeToAreaImpl.java b/src/main/java/org/olat/course/assessment/model/AssessmentModeToAreaImpl.java
index 57808e44bb7..fcdf67ddc5c 100644
--- a/src/main/java/org/olat/course/assessment/model/AssessmentModeToAreaImpl.java
+++ b/src/main/java/org/olat/course/assessment/model/AssessmentModeToAreaImpl.java
@@ -29,6 +29,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.course.assessment.AssessmentMode;
 import org.olat.course.assessment.AssessmentModeToArea;
@@ -49,7 +50,14 @@ public class AssessmentModeToAreaImpl implements Persistable, AssessmentModeToAr
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/course/assessment/model/AssessmentModeToGroupImpl.java b/src/main/java/org/olat/course/assessment/model/AssessmentModeToGroupImpl.java
index b709392b275..444ad28c502 100644
--- a/src/main/java/org/olat/course/assessment/model/AssessmentModeToGroupImpl.java
+++ b/src/main/java/org/olat/course/assessment/model/AssessmentModeToGroupImpl.java
@@ -29,6 +29,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.course.assessment.AssessmentMode;
 import org.olat.course.assessment.AssessmentModeToGroup;
@@ -49,7 +50,14 @@ public class AssessmentModeToGroupImpl implements Persistable, AssessmentModeToG
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/course/assessment/model/UserCourseInfosImpl.java b/src/main/java/org/olat/course/assessment/model/UserCourseInfosImpl.java
index e7692db2bad..32baff3fd69 100644
--- a/src/main/java/org/olat/course/assessment/model/UserCourseInfosImpl.java
+++ b/src/main/java/org/olat/course/assessment/model/UserCourseInfosImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -49,7 +50,14 @@ public class UserCourseInfosImpl implements UserCourseInformations, Persistable,
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementImpl.hbm.xml b/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementImpl.hbm.xml
index 1915514580f..d17e726464a 100644
--- a/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementImpl.hbm.xml
+++ b/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementImpl.hbm.xml
@@ -7,7 +7,14 @@
   <class name="org.olat.course.assessment.model.UserEfficiencyStatementImpl" table="o_as_eff_statement">
 
 	<id name="key" type="long" column="id"	unsaved-value="null">
-		<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 	</id>
 
 	<version name="version" access="field" column="version" type="int"/>
@@ -46,7 +53,14 @@
   <class name="org.olat.course.assessment.model.UserEfficiencyStatementStandalone" table="o_as_eff_statement">
 
 	<id name="key" type="long" column="id"	unsaved-value="null">
-		<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 	</id>
 
 	<version name="version" access="field" column="version" type="int"/>
@@ -77,7 +91,14 @@
   
   <class name="org.olat.course.assessment.model.UserEfficiencyStatementLight" table="o_as_eff_statement" mutable="false">
 	<id name="key" type="long" column="id"	unsaved-value="null">
-		<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 	</id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementRepoImpl.java b/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementRepoImpl.java
index 6c6db6ea8cc..01d46ed2151 100644
--- a/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementRepoImpl.java
+++ b/src/main/java/org/olat/course/assessment/model/UserEfficiencyStatementRepoImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -53,7 +54,14 @@ public class UserEfficiencyStatementRepoImpl implements Persistable, ModifiedInf
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/course/certificate/model/AbstractCertificate.java b/src/main/java/org/olat/course/certificate/model/AbstractCertificate.java
index 40de69289b6..e6f7fd7754a 100644
--- a/src/main/java/org/olat/course/certificate/model/AbstractCertificate.java
+++ b/src/main/java/org/olat/course/certificate/model/AbstractCertificate.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -52,7 +53,14 @@ public abstract class AbstractCertificate implements Certificate, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/certificate/model/CertificateLightImpl.java b/src/main/java/org/olat/course/certificate/model/CertificateLightImpl.java
index 62bd7d85573..1bcf1c13ffa 100644
--- a/src/main/java/org/olat/course/certificate/model/CertificateLightImpl.java
+++ b/src/main/java/org/olat/course/certificate/model/CertificateLightImpl.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.course.certificate.CertificateLight;
 import org.olat.course.certificate.CertificateStatus;
@@ -48,7 +49,14 @@ public class CertificateLightImpl implements CertificateLight, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/certificate/model/CertificateTemplateImpl.java b/src/main/java/org/olat/course/certificate/model/CertificateTemplateImpl.java
index b1decb2d800..d438f9bf3fa 100644
--- a/src/main/java/org/olat/course/certificate/model/CertificateTemplateImpl.java
+++ b/src/main/java/org/olat/course/certificate/model/CertificateTemplateImpl.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.course.certificate.CertificateTemplate;
 
@@ -47,7 +48,14 @@ public class CertificateTemplateImpl implements CertificateTemplate, Persistable
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/db/impl/CourseDBEntryImpl.hbm.xml b/src/main/java/org/olat/course/db/impl/CourseDBEntryImpl.hbm.xml
index c36f64ded7b..8bc6ca4aa79 100644
--- a/src/main/java/org/olat/course/db/impl/CourseDBEntryImpl.hbm.xml
+++ b/src/main/java/org/olat/course/db/impl/CourseDBEntryImpl.hbm.xml
@@ -7,7 +7,14 @@
 
   <class name="org.olat.course.db.impl.CourseDBEntryImpl" table="o_co_db_entry">
     <id name="key" type="long" column="id" unsaved-value="null">
-      <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 		<version name="version" access="field" column="version"/>
diff --git a/src/main/java/org/olat/course/nodes/cl/model/DBCheck.java b/src/main/java/org/olat/course/nodes/cl/model/DBCheck.java
index 8c61a9562a6..d6f911c2a19 100644
--- a/src/main/java/org/olat/course/nodes/cl/model/DBCheck.java
+++ b/src/main/java/org/olat/course/nodes/cl/model/DBCheck.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -53,7 +54,14 @@ public class DBCheck implements Persistable, CreateInfo, ModifiedInfo {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/nodes/cl/model/DBCheckbox.java b/src/main/java/org/olat/course/nodes/cl/model/DBCheckbox.java
index 29f5e267aeb..0c709bea02f 100644
--- a/src/main/java/org/olat/course/nodes/cl/model/DBCheckbox.java
+++ b/src/main/java/org/olat/course/nodes/cl/model/DBCheckbox.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
@@ -48,7 +49,14 @@ public class DBCheckbox implements Persistable, CreateInfo, ModifiedInfo {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/nodes/gta/model/TaskImpl.java b/src/main/java/org/olat/course/nodes/gta/model/TaskImpl.java
index dba1dafb438..d167a1a160f 100644
--- a/src/main/java/org/olat/course/nodes/gta/model/TaskImpl.java
+++ b/src/main/java/org/olat/course/nodes/gta/model/TaskImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -68,7 +69,14 @@ public class TaskImpl implements Task, CreateInfo, Persistable, ModifiedInfo {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/nodes/gta/model/TaskLightImpl.java b/src/main/java/org/olat/course/nodes/gta/model/TaskLightImpl.java
index 168aaf8df83..78acaf8a4d0 100644
--- a/src/main/java/org/olat/course/nodes/gta/model/TaskLightImpl.java
+++ b/src/main/java/org/olat/course/nodes/gta/model/TaskLightImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
@@ -56,7 +57,14 @@ public class TaskLightImpl implements TaskLight, CreateInfo, Persistable, Modifi
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/nodes/gta/model/TaskListImpl.java b/src/main/java/org/olat/course/nodes/gta/model/TaskListImpl.java
index b97530b5a77..8275a545a50 100644
--- a/src/main/java/org/olat/course/nodes/gta/model/TaskListImpl.java
+++ b/src/main/java/org/olat/course/nodes/gta/model/TaskListImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
@@ -53,7 +54,14 @@ public class TaskListImpl implements TaskList, CreateInfo, Persistable, Modified
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/course/nodes/projectbroker/datamodel/Project.hbm.xml b/src/main/java/org/olat/course/nodes/projectbroker/datamodel/Project.hbm.xml
index 1da2d604a85..7c5f3d83512 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/datamodel/Project.hbm.xml
+++ b/src/main/java/org/olat/course/nodes/projectbroker/datamodel/Project.hbm.xml
@@ -8,7 +8,14 @@
   <class name="org.olat.course.nodes.projectbroker.datamodel.ProjectImpl" table="o_projectbroker_project">
     
     <id name="key" column="project_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBroker.hbm.xml b/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBroker.hbm.xml
index 0358920d5e3..9571a3d2e53 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBroker.hbm.xml
+++ b/src/main/java/org/olat/course/nodes/projectbroker/datamodel/ProjectBroker.hbm.xml
@@ -7,7 +7,14 @@
   <class name="org.olat.course.nodes.projectbroker.datamodel.ProjectBrokerImpl" table="o_projectbroker">
   
     <id name="key" column="projectbroker_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml
index 8b279f2afc6..28f7608e1a5 100644
--- a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml
+++ b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml
@@ -8,7 +8,14 @@
 		table="o_stat_homeorg">
 
 		<id name="key"                  column="id"          type="long" unsaved-value="null">
-			<generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 		<property name="businessPath"   column="businesspath"		type="string"	length="2048" not-null="true" />
 		<property name="resId"			column="resid"				type="long"		not-null="true"/>
diff --git a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml
index 2b7ea21c237..f60558e9c1a 100644
--- a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml
+++ b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml
@@ -8,7 +8,14 @@
 		table="o_stat_orgtype">
 
 		<id name="key"                  column="id"          type="long" unsaved-value="null">
-			<generator class="hilo" />
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		<property name="businessPath"   column="businesspath"		type="string"	length="2048" not-null="true" />
 		<property name="resId"			column="resid"				type="long"		not-null="true"/>
diff --git a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml
index 2268b2336d2..85e332eacde 100644
--- a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml
+++ b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml
@@ -8,7 +8,14 @@
 		table="o_stat_studybranch3">
 
 		<id name="key"                  column="id"          type="long" unsaved-value="null">
-			<generator class="hilo" />
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		<property name="businessPath"   column="businesspath"		type="string"	length="2048" not-null="true" />
 		<property name="resId"			column="resid"				type="long"		not-null="true"/>
diff --git a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml
index 48b66cd46d3..9ab9435221f 100644
--- a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml
+++ b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml
@@ -8,7 +8,14 @@
 		table="o_stat_studylevel">
 
 		<id name="key"                  column="id"          type="long" unsaved-value="null">
-			<generator class="hilo" />
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		<property name="businessPath"   column="businesspath"		type="string"	length="2048" not-null="true" />
 		<property name="resId"			column="resid"				type="long"		not-null="true"/>
diff --git a/src/main/java/org/olat/group/BusinessGroupImpl.java b/src/main/java/org/olat/group/BusinessGroupImpl.java
index f6e1a01427d..539d39663b4 100644
--- a/src/main/java/org/olat/group/BusinessGroupImpl.java
+++ b/src/main/java/org/olat/group/BusinessGroupImpl.java
@@ -40,6 +40,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.model.GroupImpl;
 import org.olat.core.id.ModifiedInfo;
@@ -68,7 +69,14 @@ public class BusinessGroupImpl implements Persistable, ModifiedInfo, BusinessGro
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="group_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/group/area/BGAreaImpl.hbm.xml b/src/main/java/org/olat/group/area/BGAreaImpl.hbm.xml
index f3167027da8..54be32d322f 100644
--- a/src/main/java/org/olat/group/area/BGAreaImpl.hbm.xml
+++ b/src/main/java/org/olat/group/area/BGAreaImpl.hbm.xml
@@ -5,11 +5,15 @@
 
 <hibernate-mapping default-lazy="false">
     <class name="org.olat.group.area.BGAreaImpl" table="o_gp_bgarea">
-        <id name="key"
-        	type="long"
-        	column="area_id"
-        	unsaved-value="null">
-            <generator class="hilo" />
+        <id name="key" type="long" column="area_id" unsaved-value="null">
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
         </id>
         
         <version name="version" access="field" column="version" type="int" />
diff --git a/src/main/java/org/olat/group/area/BGtoAreaRelationImpl.hbm.xml b/src/main/java/org/olat/group/area/BGtoAreaRelationImpl.hbm.xml
index 079584da58a..c11ff1d69bc 100644
--- a/src/main/java/org/olat/group/area/BGtoAreaRelationImpl.hbm.xml
+++ b/src/main/java/org/olat/group/area/BGtoAreaRelationImpl.hbm.xml
@@ -3,11 +3,15 @@
 
 <hibernate-mapping default-lazy="false">
  <class name="org.olat.group.area.BGtoAreaRelationImpl" table="o_gp_bgtoarea_rel">
-    <id name="key"
-		type="long"
-		column="bgtoarea_id"
-		unsaved-value="null">
-	    <generator class="hilo" />
+    <id name="key" type="long" column="bgtoarea_id" unsaved-value="null">
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
    
    	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/group/model/BusinessGroupMembershipViewImpl.java b/src/main/java/org/olat/group/model/BusinessGroupMembershipViewImpl.java
index 86fe886b6b6..2b03d1a172b 100644
--- a/src/main/java/org/olat/group/model/BusinessGroupMembershipViewImpl.java
+++ b/src/main/java/org/olat/group/model/BusinessGroupMembershipViewImpl.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 
 /**
@@ -44,7 +45,14 @@ public class BusinessGroupMembershipViewImpl implements Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="membership_id", nullable=false, insertable=false, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/group/model/BusinessGroupShortImpl.java b/src/main/java/org/olat/group/model/BusinessGroupShortImpl.java
index 8aa256adb1b..1772f18ef1a 100644
--- a/src/main/java/org/olat/group/model/BusinessGroupShortImpl.java
+++ b/src/main/java/org/olat/group/model/BusinessGroupShortImpl.java
@@ -28,6 +28,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.group.BusinessGroup;
@@ -53,7 +54,14 @@ public class BusinessGroupShortImpl implements Persistable, BusinessGroupShort {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="group_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/group/model/BusinessGroupToSearch.java b/src/main/java/org/olat/group/model/BusinessGroupToSearch.java
index f90dc756334..d6016df89ff 100644
--- a/src/main/java/org/olat/group/model/BusinessGroupToSearch.java
+++ b/src/main/java/org/olat/group/model/BusinessGroupToSearch.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.model.GroupImpl;
 import org.olat.core.id.Persistable;
@@ -56,7 +57,14 @@ public class BusinessGroupToSearch implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="group_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/group/model/ContactView.java b/src/main/java/org/olat/group/model/ContactView.java
index bde91c27bae..4c10f456ead 100644
--- a/src/main/java/org/olat/group/model/ContactView.java
+++ b/src/main/java/org/olat/group/model/ContactView.java
@@ -29,6 +29,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -47,7 +48,14 @@ public class ContactView implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="membership_id", nullable=false, unique=true, insertable=false, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/group/model/ContactViewExtended.java b/src/main/java/org/olat/group/model/ContactViewExtended.java
index 15f1fa083cf..02fd2e0ab36 100644
--- a/src/main/java/org/olat/group/model/ContactViewExtended.java
+++ b/src/main/java/org/olat/group/model/ContactViewExtended.java
@@ -26,6 +26,7 @@ import javax.persistence.Id;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityNames;
 import org.olat.core.id.Persistable;
 import org.olat.group.BusinessGroupMemberView;
@@ -44,7 +45,14 @@ public class ContactViewExtended implements BusinessGroupMemberView, IdentityNam
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="membership_id", nullable=false, unique=true, insertable=false, updatable=false)
 	private Long membershipKey;
 
diff --git a/src/main/java/org/olat/group/model/GroupToBusinessGroup.java b/src/main/java/org/olat/group/model/GroupToBusinessGroup.java
index 0bb708f1ec8..4bc855ec17e 100644
--- a/src/main/java/org/olat/group/model/GroupToBusinessGroup.java
+++ b/src/main/java/org/olat/group/model/GroupToBusinessGroup.java
@@ -29,6 +29,7 @@ import javax.persistence.OneToMany;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupImpl;
 
@@ -45,7 +46,14 @@ public class GroupToBusinessGroup {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/group/model/RepositoryEntryToBusinessGroup.java b/src/main/java/org/olat/group/model/RepositoryEntryToBusinessGroup.java
index fb1bb0802c3..60c9dd707cd 100644
--- a/src/main/java/org/olat/group/model/RepositoryEntryToBusinessGroup.java
+++ b/src/main/java/org/olat/group/model/RepositoryEntryToBusinessGroup.java
@@ -29,6 +29,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.repository.RepositoryEntry;
 
 /**
@@ -44,7 +45,14 @@ public class RepositoryEntryToBusinessGroup {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/ims/lti/model/LTIOutcomeImpl.java b/src/main/java/org/olat/ims/lti/model/LTIOutcomeImpl.java
index 9b37d5c7146..7d636b8a445 100644
--- a/src/main/java/org/olat/ims/lti/model/LTIOutcomeImpl.java
+++ b/src/main/java/org/olat/ims/lti/model/LTIOutcomeImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -60,8 +61,15 @@ public class LTIOutcomeImpl implements LTIOutcome, CreateInfo, ModifiedInfo, Per
 	private static final long serialVersionUID = 8645018375238423824L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/ims/qti/QTIResult.hbm.xml b/src/main/java/org/olat/ims/qti/QTIResult.hbm.xml
index c47fa68382a..aea9ed50d8a 100644
--- a/src/main/java/org/olat/ims/qti/QTIResult.hbm.xml
+++ b/src/main/java/org/olat/ims/qti/QTIResult.hbm.xml
@@ -7,7 +7,14 @@
   <class name="org.olat.ims.qti.QTIResult" table="o_qtiresult">
   
     <id name="key" column="result_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
     <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/ims/qti/QTIResultSet.hbm.xml b/src/main/java/org/olat/ims/qti/QTIResultSet.hbm.xml
index 12c567c73c2..bee6c3689ac 100644
--- a/src/main/java/org/olat/ims/qti/QTIResultSet.hbm.xml
+++ b/src/main/java/org/olat/ims/qti/QTIResultSet.hbm.xml
@@ -7,7 +7,14 @@
   <class name="org.olat.ims.qti.QTIResultSet" table="o_qtiresultset">
   
     <id name="key" column="resultset_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+ 		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResult.java b/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResult.java
index df89b405dad..8a9926d3eef 100644
--- a/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResult.java
+++ b/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResult.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -49,7 +50,14 @@ public class QTIStatisticResult implements CreateInfo, Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="result_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Temporal(TemporalType.TIMESTAMP)
diff --git a/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResultSet.java b/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResultSet.java
index 7a316b02096..94c2a99a4c2 100644
--- a/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResultSet.java
+++ b/src/main/java/org/olat/ims/qti/statistics/model/QTIStatisticResultSet.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -48,7 +49,14 @@ public class QTIStatisticResultSet implements CreateInfo, Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="resultset_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Temporal(TemporalType.TIMESTAMP)
diff --git a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java
index 0f7e266dbc8..2f7cba2bc36 100644
--- a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java
+++ b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java
@@ -26,6 +26,7 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -33,7 +34,6 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
-import org.hibernate.annotations.GenericGenerator;
 import org.olat.core.id.Persistable;
 import org.olat.ims.qti21.AssessmentItemSession;
 import org.olat.ims.qti21.AssessmentTestSession;
@@ -51,8 +51,7 @@ public class AssessmentItemSessionImpl implements AssessmentItemSession, Persist
 	private static final long serialVersionUID = 404608933232435117L;
 
 	@Id
-	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentResponseImpl.java b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentResponseImpl.java
index 60902269be4..60daf231cac 100644
--- a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentResponseImpl.java
+++ b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentResponseImpl.java
@@ -25,6 +25,7 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -32,7 +33,6 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
-import org.hibernate.annotations.GenericGenerator;
 import org.olat.core.id.Persistable;
 import org.olat.ims.qti21.AssessmentItemSession;
 import org.olat.ims.qti21.AssessmentResponse;
@@ -51,8 +51,7 @@ public class AssessmentResponseImpl implements AssessmentResponse, Persistable {
 	private static final long serialVersionUID = 7341596483676802054L;
 
 	@Id
-	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestMarksImpl.java b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestMarksImpl.java
index 4707a65178b..ce7b67648b4 100644
--- a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestMarksImpl.java
+++ b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestMarksImpl.java
@@ -25,6 +25,7 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -32,7 +33,6 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
-import org.hibernate.annotations.GenericGenerator;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -52,8 +52,7 @@ public class AssessmentTestMarksImpl implements AssessmentTestMarks, Persistable
 	private static final long serialVersionUID = 8011184362728276169L;
 
 	@Id
-	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionImpl.java b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionImpl.java
index 65dc73f3c13..8136899e768 100644
--- a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionImpl.java
+++ b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionImpl.java
@@ -26,6 +26,7 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -35,7 +36,6 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
-import org.hibernate.annotations.GenericGenerator;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -63,8 +63,7 @@ public class AssessmentTestSessionImpl implements AssessmentTestSession, Persist
 	private static final long serialVersionUID = -6069133323360142500L;
 
 	@Id
-	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/instantMessaging/model/ImPreferencesImpl.java b/src/main/java/org/olat/instantMessaging/model/ImPreferencesImpl.java
index 99baafed7b2..d49de9f7eab 100644
--- a/src/main/java/org/olat/instantMessaging/model/ImPreferencesImpl.java
+++ b/src/main/java/org/olat/instantMessaging/model/ImPreferencesImpl.java
@@ -42,6 +42,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -70,7 +71,14 @@ public class ImPreferencesImpl implements ImPreferences, Persistable, CreateInfo
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/instantMessaging/model/InstantMessageImpl.java b/src/main/java/org/olat/instantMessaging/model/InstantMessageImpl.java
index 36bd4643b15..71336a847e6 100644
--- a/src/main/java/org/olat/instantMessaging/model/InstantMessageImpl.java
+++ b/src/main/java/org/olat/instantMessaging/model/InstantMessageImpl.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -56,7 +57,14 @@ public class InstantMessageImpl implements InstantMessage, Persistable, CreateIn
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/instantMessaging/model/InstantMessageNotificationImpl.java b/src/main/java/org/olat/instantMessaging/model/InstantMessageNotificationImpl.java
index b1aa6ab3b32..082b1940914 100644
--- a/src/main/java/org/olat/instantMessaging/model/InstantMessageNotificationImpl.java
+++ b/src/main/java/org/olat/instantMessaging/model/InstantMessageNotificationImpl.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.Persistable;
@@ -54,8 +55,15 @@ public class InstantMessageNotificationImpl implements InstantMessageNotificatio
 	private static final long serialVersionUID = -1244360269062615091L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java b/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java
index 98fba00d8c8..71453c3a30a 100644
--- a/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java
+++ b/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -57,7 +58,14 @@ public class RosterEntryImpl implements Persistable, CreateInfo {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/instantMessaging/model/RosterEntryView.java b/src/main/java/org/olat/instantMessaging/model/RosterEntryView.java
index 6b66b90dd60..e5a92a59b56 100644
--- a/src/main/java/org/olat/instantMessaging/model/RosterEntryView.java
+++ b/src/main/java/org/olat/instantMessaging/model/RosterEntryView.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -54,7 +55,14 @@ public class RosterEntryView implements Persistable, CreateInfo {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="re_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java b/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java
index 8f6b1208b37..09d1afc8954 100644
--- a/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java
+++ b/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java
@@ -26,6 +26,7 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -35,7 +36,6 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
-import org.hibernate.annotations.GenericGenerator;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -68,8 +68,7 @@ public class AssessmentEntryImpl implements Persistable, ModifiedInfo, CreateInf
 	private static final long serialVersionUID = 2934783777645549412L;
 
 	@Id
-	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/fo/model/ForumImpl.java b/src/main/java/org/olat/modules/fo/model/ForumImpl.java
index 0ee927494f0..71e80a044a0 100644
--- a/src/main/java/org/olat/modules/fo/model/ForumImpl.java
+++ b/src/main/java/org/olat/modules/fo/model/ForumImpl.java
@@ -36,6 +36,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 import org.olat.core.logging.AssertException;
@@ -56,7 +57,14 @@ public class ForumImpl implements Forum, CreateInfo, Persistable{
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="forum_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/modules/fo/model/MessageImpl.java b/src/main/java/org/olat/modules/fo/model/MessageImpl.java
index 6a1509c75ab..90b70a0e4da 100644
--- a/src/main/java/org/olat/modules/fo/model/MessageImpl.java
+++ b/src/main/java/org/olat/modules/fo/model/MessageImpl.java
@@ -39,6 +39,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -57,7 +58,14 @@ public class MessageImpl implements CreateInfo, Persistable, Message {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="message_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/modules/fo/model/MessageLightImpl.java b/src/main/java/org/olat/modules/fo/model/MessageLightImpl.java
index 5e1f3dd7c8f..54fd2e06ed4 100644
--- a/src/main/java/org/olat/modules/fo/model/MessageLightImpl.java
+++ b/src/main/java/org/olat/modules/fo/model/MessageLightImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -56,7 +57,14 @@ public class MessageLightImpl implements MessageLight, CreateInfo, Persistable,
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="message_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/fo/model/MessagePeekviewImpl.java b/src/main/java/org/olat/modules/fo/model/MessagePeekviewImpl.java
index 45f8416cace..8f3381ac3ef 100644
--- a/src/main/java/org/olat/modules/fo/model/MessagePeekviewImpl.java
+++ b/src/main/java/org/olat/modules/fo/model/MessagePeekviewImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.modules.fo.MessageRef;
 import org.olat.modules.fo.ui.MessagePeekview;
@@ -53,7 +54,14 @@ public class MessagePeekviewImpl implements MessagePeekview, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="message_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/fo/model/MessageRefImpl.java b/src/main/java/org/olat/modules/fo/model/MessageRefImpl.java
index a47daf318fe..de2be26e1ea 100644
--- a/src/main/java/org/olat/modules/fo/model/MessageRefImpl.java
+++ b/src/main/java/org/olat/modules/fo/model/MessageRefImpl.java
@@ -26,6 +26,7 @@ import javax.persistence.Id;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.modules.fo.MessageRef;
 
 /**
@@ -41,7 +42,14 @@ public class MessageRefImpl implements MessageRef {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="message_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/modules/fo/model/MessageStatistics.java b/src/main/java/org/olat/modules/fo/model/MessageStatistics.java
index cffbc626a62..23b78f319cf 100644
--- a/src/main/java/org/olat/modules/fo/model/MessageStatistics.java
+++ b/src/main/java/org/olat/modules/fo/model/MessageStatistics.java
@@ -39,6 +39,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -57,7 +58,14 @@ public class MessageStatistics implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="message_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/modules/fo/model/ReadMessageImpl.java b/src/main/java/org/olat/modules/fo/model/ReadMessageImpl.java
index 2f7447e0cdd..c4a653984da 100644
--- a/src/main/java/org/olat/modules/fo/model/ReadMessageImpl.java
+++ b/src/main/java/org/olat/modules/fo/model/ReadMessageImpl.java
@@ -39,6 +39,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -55,7 +56,14 @@ public class ReadMessageImpl implements CreateInfo, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/modules/gotomeeting/model/GoToMeetingImpl.java b/src/main/java/org/olat/modules/gotomeeting/model/GoToMeetingImpl.java
index b8462fa23ff..ab16ad1a4f4 100644
--- a/src/main/java/org/olat/modules/gotomeeting/model/GoToMeetingImpl.java
+++ b/src/main/java/org/olat/modules/gotomeeting/model/GoToMeetingImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
 import org.olat.group.BusinessGroup;
@@ -57,7 +58,14 @@ public class GoToMeetingImpl implements GoToMeeting, Persistable, ModifiedInfo {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/modules/gotomeeting/model/GoToOrganizerImpl.java b/src/main/java/org/olat/modules/gotomeeting/model/GoToOrganizerImpl.java
index 1bc09f017f4..0ca53930b08 100644
--- a/src/main/java/org/olat/modules/gotomeeting/model/GoToOrganizerImpl.java
+++ b/src/main/java/org/olat/modules/gotomeeting/model/GoToOrganizerImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -61,7 +62,14 @@ public class GoToOrganizerImpl implements GoToOrganizer, Persistable, ModifiedIn
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/gotomeeting/model/GoToRegistrantImpl.java b/src/main/java/org/olat/modules/gotomeeting/model/GoToRegistrantImpl.java
index 8cc20057a85..c710a734334 100644
--- a/src/main/java/org/olat/modules/gotomeeting/model/GoToRegistrantImpl.java
+++ b/src/main/java/org/olat/modules/gotomeeting/model/GoToRegistrantImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -56,7 +57,14 @@ public class GoToRegistrantImpl implements GoToRegistrant, Persistable, Modified
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/modules/openmeetings/model/OpenMeetingsReference.hbm.xml b/src/main/java/org/olat/modules/openmeetings/model/OpenMeetingsReference.hbm.xml
index 34db1ee396b..57700620259 100644
--- a/src/main/java/org/olat/modules/openmeetings/model/OpenMeetingsReference.hbm.xml
+++ b/src/main/java/org/olat/modules/openmeetings/model/OpenMeetingsReference.hbm.xml
@@ -8,7 +8,14 @@
   <class name="org.olat.modules.openmeetings.model.OpenMeetingsRoomReference" table="o_om_room_reference">
   	
     <id name="key" type="long" column="id" unsaved-value="null">
-      <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/modules/qpool/model/BusinessGroupToItemView.java b/src/main/java/org/olat/modules/qpool/model/BusinessGroupToItemView.java
index 814787b357b..d59f81d75e2 100644
--- a/src/main/java/org/olat/modules/qpool/model/BusinessGroupToItemView.java
+++ b/src/main/java/org/olat/modules/qpool/model/BusinessGroupToItemView.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.modules.qpool.QuestionItem2Resource;
 
@@ -46,8 +47,15 @@ public class BusinessGroupToItemView implements QuestionItem2Resource {
 	private static final long serialVersionUID = 771486605914944671L;
 	
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="item_to_share_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Temporal(TemporalType.TIMESTAMP)
diff --git a/src/main/java/org/olat/modules/qpool/model/CollectionToItem.java b/src/main/java/org/olat/modules/qpool/model/CollectionToItem.java
index c585987fe66..6e8c0d79f7c 100644
--- a/src/main/java/org/olat/modules/qpool/model/CollectionToItem.java
+++ b/src/main/java/org/olat/modules/qpool/model/CollectionToItem.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 import org.olat.modules.qpool.QuestionItemCollection;
@@ -50,8 +51,15 @@ public class CollectionToItem implements CreateInfo, Persistable  {
 	private static final long serialVersionUID = -666092954369833281L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/ItemCollectionImpl.java b/src/main/java/org/olat/modules/qpool/model/ItemCollectionImpl.java
index cfa80c3b66e..6c7564ef0e7 100644
--- a/src/main/java/org/olat/modules/qpool/model/ItemCollectionImpl.java
+++ b/src/main/java/org/olat/modules/qpool/model/ItemCollectionImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -51,8 +52,15 @@ public class ItemCollectionImpl implements QuestionItemCollection, Persistable {
 	private static final long serialVersionUID = 898627243085538859L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/PoolImpl.java b/src/main/java/org/olat/modules/qpool/model/PoolImpl.java
index 6cd850553d2..3bfbb5c5d81 100644
--- a/src/main/java/org/olat/modules/qpool/model/PoolImpl.java
+++ b/src/main/java/org/olat/modules/qpool/model/PoolImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.basesecurity.SecurityGroupImpl;
 import org.olat.core.id.CreateInfo;
@@ -59,7 +60,14 @@ public class PoolImpl implements Pool, CreateInfo, ModifiedInfo, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/PoolItemShortView.java b/src/main/java/org/olat/modules/qpool/model/PoolItemShortView.java
index a3ba18a9106..c69279c62d5 100644
--- a/src/main/java/org/olat/modules/qpool/model/PoolItemShortView.java
+++ b/src/main/java/org/olat/modules/qpool/model/PoolItemShortView.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.modules.qpool.QuestionItem2Pool;
 
@@ -47,7 +48,14 @@ public class PoolItemShortView implements QuestionItem2Pool {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="item_to_pool_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Temporal(TemporalType.TIMESTAMP)
diff --git a/src/main/java/org/olat/modules/qpool/model/PoolToItem.java b/src/main/java/org/olat/modules/qpool/model/PoolToItem.java
index 549560d60d8..9728a47152d 100644
--- a/src/main/java/org/olat/modules/qpool/model/PoolToItem.java
+++ b/src/main/java/org/olat/modules/qpool/model/PoolToItem.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 import org.olat.modules.qpool.Pool;
@@ -51,8 +52,15 @@ public class PoolToItem implements CreateInfo, Persistable {
 	private static final long serialVersionUID = -2114442630543980092L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/QEducationalContext.java b/src/main/java/org/olat/modules/qpool/model/QEducationalContext.java
index 47ccb8df4bc..053e51a0986 100644
--- a/src/main/java/org/olat/modules/qpool/model/QEducationalContext.java
+++ b/src/main/java/org/olat/modules/qpool/model/QEducationalContext.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -53,8 +54,15 @@ public class QEducationalContext implements CreateInfo, Persistable {
 	private static final long serialVersionUID = 7688819263188243303L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/QItemType.java b/src/main/java/org/olat/modules/qpool/model/QItemType.java
index bd2e91f0ac1..cac787b2388 100644
--- a/src/main/java/org/olat/modules/qpool/model/QItemType.java
+++ b/src/main/java/org/olat/modules/qpool/model/QItemType.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -53,8 +54,15 @@ public class QItemType implements CreateInfo, Persistable {
 	private static final long serialVersionUID = -3853789181651253873L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/QLicense.java b/src/main/java/org/olat/modules/qpool/model/QLicense.java
index 8bebed863fc..66ee4a8ff1c 100644
--- a/src/main/java/org/olat/modules/qpool/model/QLicense.java
+++ b/src/main/java/org/olat/modules/qpool/model/QLicense.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 
@@ -53,8 +54,15 @@ public class QLicense implements CreateInfo, Persistable {
 	private static final long serialVersionUID = -5165837831689041061L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/QuestionItemImpl.java b/src/main/java/org/olat/modules/qpool/model/QuestionItemImpl.java
index c4f4f0d5c8e..d538ba8c420 100644
--- a/src/main/java/org/olat/modules/qpool/model/QuestionItemImpl.java
+++ b/src/main/java/org/olat/modules/qpool/model/QuestionItemImpl.java
@@ -37,6 +37,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.basesecurity.SecurityGroupImpl;
 import org.olat.core.id.CreateInfo;
@@ -63,7 +64,14 @@ public class QuestionItemImpl implements QuestionItemFull, CreateInfo, ModifiedI
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/ResourceShareImpl.java b/src/main/java/org/olat/modules/qpool/model/ResourceShareImpl.java
index 04575604802..2f92d4fe840 100644
--- a/src/main/java/org/olat/modules/qpool/model/ResourceShareImpl.java
+++ b/src/main/java/org/olat/modules/qpool/model/ResourceShareImpl.java
@@ -32,6 +32,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Persistable;
 import org.olat.modules.qpool.QuestionItem;
@@ -52,8 +53,15 @@ public class ResourceShareImpl implements CreateInfo, Persistable {
 	private static final long serialVersionUID = 2691899888334560403L;
 	
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/qpool/model/TaxonomyLevelImpl.java b/src/main/java/org/olat/modules/qpool/model/TaxonomyLevelImpl.java
index accafcd366f..5c05043fbdb 100644
--- a/src/main/java/org/olat/modules/qpool/model/TaxonomyLevelImpl.java
+++ b/src/main/java/org/olat/modules/qpool/model/TaxonomyLevelImpl.java
@@ -34,6 +34,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
@@ -58,8 +59,15 @@ public class TaxonomyLevelImpl implements TaxonomyLevel, CreateInfo, ModifiedInf
 	private static final long serialVersionUID = -1150399691749897973L;
 
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java b/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java
index f3ffe9dad63..2dbc078efcd 100644
--- a/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java
+++ b/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -60,7 +61,14 @@ public class ReminderImpl implements Reminder, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/reminder/model/SentReminderImpl.java b/src/main/java/org/olat/modules/reminder/model/SentReminderImpl.java
index d7bad569254..5b3b5d92439 100644
--- a/src/main/java/org/olat/modules/reminder/model/SentReminderImpl.java
+++ b/src/main/java/org/olat/modules/reminder/model/SentReminderImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.Persistable;
@@ -53,7 +54,14 @@ public class SentReminderImpl implements SentReminder, Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java b/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java
index 26d7e555099..ebe9b97d7c2 100644
--- a/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java
+++ b/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
 import org.olat.modules.video.VideoTranscoding;
@@ -54,7 +55,14 @@ public class VideoTranscodingImpl implements VideoTranscoding, Persistable, Modi
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/note/NoteImpl.hbm.xml b/src/main/java/org/olat/note/NoteImpl.hbm.xml
index 1599526c201..ab87e948509 100644
--- a/src/main/java/org/olat/note/NoteImpl.hbm.xml
+++ b/src/main/java/org/olat/note/NoteImpl.hbm.xml
@@ -9,7 +9,14 @@
   <class name="org.olat.note.NoteImpl" table="o_note">
     
     <id name="key" column="note_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/portfolio/model/InvitationImpl.java b/src/main/java/org/olat/portfolio/model/InvitationImpl.java
index 30578fb2b1c..0eeb5d66c58 100644
--- a/src/main/java/org/olat/portfolio/model/InvitationImpl.java
+++ b/src/main/java/org/olat/portfolio/model/InvitationImpl.java
@@ -34,6 +34,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.Invitation;
 import org.olat.basesecurity.model.GroupImpl;
@@ -57,7 +58,14 @@ public class InvitationImpl implements CreateInfo, Persistable, Invitation {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Temporal(TemporalType.TIMESTAMP)
diff --git a/src/main/java/org/olat/portfolio/model/artefacts/AbstractArtefact.hbm.xml b/src/main/java/org/olat/portfolio/model/artefacts/AbstractArtefact.hbm.xml
index 26f01d2ff8e..07fb65f64d5 100644
--- a/src/main/java/org/olat/portfolio/model/artefacts/AbstractArtefact.hbm.xml
+++ b/src/main/java/org/olat/portfolio/model/artefacts/AbstractArtefact.hbm.xml
@@ -5,7 +5,14 @@
   <class name="org.olat.portfolio.model.artefacts.AbstractArtefact" table="o_ep_artefact">
   	<!-- the default columns -->
     <id name="key" column="artefact_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     <discriminator column="artefact_type" type="string"/>
     <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/portfolio/model/notification/Notifications.hbm.xml b/src/main/java/org/olat/portfolio/model/notification/Notifications.hbm.xml
index d6e41e43583..c363b3b5afe 100644
--- a/src/main/java/org/olat/portfolio/model/notification/Notifications.hbm.xml
+++ b/src/main/java/org/olat/portfolio/model/notification/Notifications.hbm.xml
@@ -5,8 +5,17 @@
   <class name="org.olat.portfolio.model.notification.EPStructureElementNotification" table="o_ep_notifications_struct_v" mutable="false">
   	<!-- the default columns -->
     <id name="key" column="struct_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
-    </id>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
+	</id>
+    
+    
 	<property name="type" column="struct_type" type="string"/>
 	<property name="title" column="struct_title" type="string"/>
 	<property name="rootKey" column="struct_root_id" type="long"/>
@@ -43,7 +52,14 @@
   <class name="org.olat.portfolio.model.notification.EPRatingNotification" table="o_ep_notifications_rating_v" mutable="false">
   	<!-- the default columns -->
 	<id name="key" column="rating_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	<property name="creationDate" column="creation_date" type="timestamp" />
 	<property name="lastModified" column="last_modified" type="timestamp" />
@@ -59,7 +75,14 @@
   <class name="org.olat.portfolio.model.notification.EPCommentNotification" table="o_ep_notifications_comment_v" mutable="false">
   	<!-- the default columns -->
 	<id name="key" column="comment_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	<property name="creationDate" column="creation_date" type="timestamp" />
 
diff --git a/src/main/java/org/olat/portfolio/model/restriction/CollectRestriction.hbm.xml b/src/main/java/org/olat/portfolio/model/restriction/CollectRestriction.hbm.xml
index 54b93bd7e8b..6f899c647c4 100644
--- a/src/main/java/org/olat/portfolio/model/restriction/CollectRestriction.hbm.xml
+++ b/src/main/java/org/olat/portfolio/model/restriction/CollectRestriction.hbm.xml
@@ -5,7 +5,14 @@
   <class name="org.olat.portfolio.model.restriction.CollectRestriction" table="o_ep_collect_restriction">
   	<!-- the default columns -->
     <id name="key" column="collect_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     <version name="version" access="field" column="version" type="int"/>
 		<property name="creationDate" column="creationdate" type="timestamp" />
diff --git a/src/main/java/org/olat/portfolio/model/structel/EPStructureElementToGroupRelation.java b/src/main/java/org/olat/portfolio/model/structel/EPStructureElementToGroupRelation.java
index 9dd0f3632b5..46fc190d8d1 100644
--- a/src/main/java/org/olat/portfolio/model/structel/EPStructureElementToGroupRelation.java
+++ b/src/main/java/org/olat/portfolio/model/structel/EPStructureElementToGroupRelation.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.model.GroupImpl;
 import org.olat.core.id.Persistable;
@@ -51,7 +52,14 @@ public class EPStructureElementToGroupRelation implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/portfolio/model/structel/StructureElement.hbm.xml b/src/main/java/org/olat/portfolio/model/structel/StructureElement.hbm.xml
index fdb67cbe7de..c15c7a3983e 100644
--- a/src/main/java/org/olat/portfolio/model/structel/StructureElement.hbm.xml
+++ b/src/main/java/org/olat/portfolio/model/structel/StructureElement.hbm.xml
@@ -5,7 +5,14 @@
 	<class name="org.olat.portfolio.model.structel.EPStructureElement" table="o_ep_struct_el" discriminator-value="element">
 		<!-- the default columns -->
 		<id name="key" column="structure_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		<discriminator column="structure_type" type="string"/>
 		<version name="version" access="field" column="version" type="int"/>
@@ -112,7 +119,14 @@
 
 	<class name="org.olat.portfolio.model.structel.EPStructureToStructureLink" table="o_ep_struct_struct_link">
 		<id name="key" column="link_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		<version name="version" access="field" column="version" type="int"/>
 		<property name="creationDate" column="creationdate" type="timestamp" />
@@ -126,7 +140,14 @@
   
 	<class name="org.olat.portfolio.model.structel.EPStructureToArtefactLink" table="o_ep_struct_artefact_link">
 		<id name="key" column="link_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		<version name="version" access="field" column="version" type="int"/>
 		<property  name="creationDate" column="creationdate" type="timestamp" />
@@ -144,7 +165,14 @@
   
 	<class name="org.olat.portfolio.model.structel.EPMapShort" table="o_ep_struct_el" mutable="false">
 		<id name="key" column="structure_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
     
 		<property name="sourceMapKey" column="fk_map_source_id" type="long"/>
diff --git a/src/main/java/org/olat/properties/Property.hbm.xml b/src/main/java/org/olat/properties/Property.hbm.xml
index 817247ec355..1ecc0383017 100644
--- a/src/main/java/org/olat/properties/Property.hbm.xml
+++ b/src/main/java/org/olat/properties/Property.hbm.xml
@@ -8,7 +8,14 @@
   <class name="org.olat.properties.Property" table="o_property">
   	
     <id name="key" type="long" column="id" unsaved-value="null">
-      <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 	
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/registration/TemporaryKeyImpl.hbm.xml b/src/main/java/org/olat/registration/TemporaryKeyImpl.hbm.xml
index 12318d9269a..7286a998983 100644
--- a/src/main/java/org/olat/registration/TemporaryKeyImpl.hbm.xml
+++ b/src/main/java/org/olat/registration/TemporaryKeyImpl.hbm.xml
@@ -6,7 +6,14 @@
 <hibernate-mapping default-lazy="false">
   <class name="org.olat.registration.TemporaryKeyImpl" table="o_temporarykey">
     <id name="key" type="long" column="reglist_id" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/repository/RepositoryEntry.hbm.xml b/src/main/java/org/olat/repository/RepositoryEntry.hbm.xml
index 4c71338f301..6878dfcb6b6 100644
--- a/src/main/java/org/olat/repository/RepositoryEntry.hbm.xml
+++ b/src/main/java/org/olat/repository/RepositoryEntry.hbm.xml
@@ -3,7 +3,14 @@
 <hibernate-mapping>
 	<class name="org.olat.repository.model.RepositoryEntryShortImpl" table="o_repositoryentry" mutable="false">
 		<id name="key" column="repositoryentry_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 
 		<property name="displayname" column="displayname" type="string"/>
diff --git a/src/main/java/org/olat/repository/RepositoryEntry.java b/src/main/java/org/olat/repository/RepositoryEntry.java
index 810bef7a54b..c4f3b5f02b4 100644
--- a/src/main/java/org/olat/repository/RepositoryEntry.java
+++ b/src/main/java/org/olat/repository/RepositoryEntry.java
@@ -45,6 +45,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
@@ -100,7 +101,14 @@ public class RepositoryEntry implements CreateInfo, Persistable , RepositoryEntr
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="repositoryentry_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/repository/model/CatalogEntryImpl.hbm.xml b/src/main/java/org/olat/repository/model/CatalogEntryImpl.hbm.xml
index 8943281bbea..858c16a3a82 100644
--- a/src/main/java/org/olat/repository/model/CatalogEntryImpl.hbm.xml
+++ b/src/main/java/org/olat/repository/model/CatalogEntryImpl.hbm.xml
@@ -8,7 +8,14 @@
   <class name="org.olat.repository.model.CatalogEntryImpl" table="o_catentry">
 
     <id name="key" column="id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryLifecycle.java b/src/main/java/org/olat/repository/model/RepositoryEntryLifecycle.java
index 7cd357ce747..9d980a22712 100644
--- a/src/main/java/org/olat/repository/model/RepositoryEntryLifecycle.java
+++ b/src/main/java/org/olat/repository/model/RepositoryEntryLifecycle.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
@@ -56,7 +57,14 @@ public class RepositoryEntryLifecycle implements Persistable, CreateInfo, Modifi
 	private static final long serialVersionUID = -8484159601386853047L;
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryLightImpl.java b/src/main/java/org/olat/repository/model/RepositoryEntryLightImpl.java
index 69d12c0b152..5a0f8b1876a 100644
--- a/src/main/java/org/olat/repository/model/RepositoryEntryLightImpl.java
+++ b/src/main/java/org/olat/repository/model/RepositoryEntryLightImpl.java
@@ -35,6 +35,7 @@ import javax.persistence.OneToMany;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.repository.RepositoryEntryLight;
 import org.olat.resource.OLATResource;
@@ -58,7 +59,14 @@ public class RepositoryEntryLightImpl implements RepositoryEntryLight, Persistab
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="repositoryentry_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java b/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java
index a3226846576..d56ab13eced 100644
--- a/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java
+++ b/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java
@@ -31,6 +31,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.GroupRoles;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.ModifiedInfo;
@@ -48,7 +49,14 @@ public class RepositoryEntryMembership implements Persistable, ModifiedInfo, Cre
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="membership_id", nullable=false, unique=true, insertable=false, updatable=false)
 	private Long key;
 	@Temporal(TemporalType.TIMESTAMP)
diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryStatistics.java b/src/main/java/org/olat/repository/model/RepositoryEntryStatistics.java
index 398ca2d11ee..d33f99f05f9 100644
--- a/src/main/java/org/olat/repository/model/RepositoryEntryStatistics.java
+++ b/src/main/java/org/olat/repository/model/RepositoryEntryStatistics.java
@@ -30,6 +30,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 
 /**
@@ -46,7 +47,14 @@ public class RepositoryEntryStatistics implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryToGroupRelation.java b/src/main/java/org/olat/repository/model/RepositoryEntryToGroupRelation.java
index 05e971af34e..9156428e72a 100644
--- a/src/main/java/org/olat/repository/model/RepositoryEntryToGroupRelation.java
+++ b/src/main/java/org/olat/repository/model/RepositoryEntryToGroupRelation.java
@@ -35,6 +35,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.model.GroupImpl;
 import org.olat.core.id.Persistable;
@@ -59,7 +60,14 @@ public class RepositoryEntryToGroupRelation implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/resource/OLATResourceImpl.hbm.xml b/src/main/java/org/olat/resource/OLATResourceImpl.hbm.xml
index 8917f91f493..bc46237ba1b 100644
--- a/src/main/java/org/olat/resource/OLATResourceImpl.hbm.xml
+++ b/src/main/java/org/olat/resource/OLATResourceImpl.hbm.xml
@@ -6,7 +6,14 @@
   <class name="org.olat.resource.OLATResourceImpl" table="o_olatresource">
 
 	<id name="key" type="long" column="resource_id"	unsaved-value="null">
-		<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 	</id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/AbstractAccessMethod.java b/src/main/java/org/olat/resource/accesscontrol/model/AbstractAccessMethod.java
index a318e4faa7a..038e93f52ec 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/AbstractAccessMethod.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/AbstractAccessMethod.java
@@ -37,6 +37,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
 
@@ -62,7 +63,14 @@ public abstract class AbstractAccessMethod implements Persistable, AccessMethod,
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+			@Parameter(name="sequence_name", value="hibernate_unique_key"),
+			@Parameter(name="force_table_use", value="true"),
+			@Parameter(name="optimizer", value="legacy-hilo"),
+			@Parameter(name="value_column", value="next_hi"),
+			@Parameter(name="increment_size", value="32767"),
+			@Parameter(name="initial_value", value="32767")
+		})
 	@Column(name="method_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/AccessMethod.hbm.xml b/src/main/java/org/olat/resource/accesscontrol/model/AccessMethod.hbm.xml
index 7f958f89f2b..d825b051bd1 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/AccessMethod.hbm.xml
+++ b/src/main/java/org/olat/resource/accesscontrol/model/AccessMethod.hbm.xml
@@ -4,7 +4,14 @@
 	
 	<class name="org.olat.resource.accesscontrol.model.AbstractAccessMethod" table="o_ac_method">
 		<id name="key" column="method_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
     <discriminator column="access_method" type="string"/>
 		
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/AccessTransactionImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/AccessTransactionImpl.java
index 5e38805bb16..49ad9466dcf 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/AccessTransactionImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/AccessTransactionImpl.java
@@ -37,6 +37,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.core.util.StringHelper;
 import org.olat.resource.accesscontrol.AccessTransaction;
@@ -53,7 +54,14 @@ public class AccessTransactionImpl implements Persistable, AccessTransaction {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="transaction_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/OfferAccessImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/OfferAccessImpl.java
index b5d96e4a2e4..a52d5693ef8 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/OfferAccessImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/OfferAccessImpl.java
@@ -36,6 +36,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.resource.accesscontrol.Offer;
 import org.olat.resource.accesscontrol.OfferAccess;
@@ -58,7 +59,14 @@ public class OfferAccessImpl implements OfferAccess, Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="offer_method_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/OfferImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/OfferImpl.java
index fcb94a641fa..5c4f6cb4223 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/OfferImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/OfferImpl.java
@@ -41,6 +41,7 @@ import javax.persistence.Version;
 import org.hibernate.annotations.GenericGenerator;
 import org.hibernate.annotations.NotFound;
 import org.hibernate.annotations.NotFoundAction;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.ModifiedInfo;
 import org.olat.core.id.Persistable;
 import org.olat.resource.OLATResource;
@@ -64,7 +65,14 @@ public class OfferImpl implements Persistable, Offer, ModifiedInfo {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="offer_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/OrderImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/OrderImpl.java
index 9523136c464..301179c6bc7 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/OrderImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/OrderImpl.java
@@ -44,6 +44,7 @@ import javax.persistence.Transient;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.Identity;
 import org.olat.core.id.ModifiedInfo;
@@ -72,7 +73,14 @@ public class OrderImpl implements Persistable, Order, ModifiedInfo {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="order_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/OrderLineImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/OrderLineImpl.java
index e4cb0642576..b021a06befa 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/OrderLineImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/OrderLineImpl.java
@@ -38,6 +38,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.resource.accesscontrol.Offer;
 import org.olat.resource.accesscontrol.OrderLine;
@@ -60,7 +61,14 @@ public class OrderLineImpl implements Persistable, OrderLine {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="order_item_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/OrderPartImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/OrderPartImpl.java
index ba6fda47306..4803c8b58e1 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/OrderPartImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/OrderPartImpl.java
@@ -43,6 +43,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.resource.accesscontrol.OrderLine;
 import org.olat.resource.accesscontrol.OrderPart;
@@ -65,7 +66,14 @@ public class OrderPartImpl implements Persistable, OrderPart {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="order_part_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/model/ResourceReservationImpl.java b/src/main/java/org/olat/resource/accesscontrol/model/ResourceReservationImpl.java
index f81e0ae358d..0ae6f18807d 100644
--- a/src/main/java/org/olat/resource/accesscontrol/model/ResourceReservationImpl.java
+++ b/src/main/java/org/olat/resource/accesscontrol/model/ResourceReservationImpl.java
@@ -36,6 +36,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.core.id.CreateInfo;
 import org.olat.core.id.Identity;
@@ -59,7 +60,14 @@ public class ResourceReservationImpl implements CreateInfo, Persistable, Resourc
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="reservation_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	@Version
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypal/model/PaypalTransaction.hbm.xml b/src/main/java/org/olat/resource/accesscontrol/provider/paypal/model/PaypalTransaction.hbm.xml
index 50a35faeef1..25d03d2a8f0 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypal/model/PaypalTransaction.hbm.xml
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypal/model/PaypalTransaction.hbm.xml
@@ -4,7 +4,14 @@
 	
 	<class name="org.olat.resource.accesscontrol.provider.paypal.model.PaypalTransaction" table="o_ac_paypal_transaction">
 		<id name="key" column="transaction_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+			<generator class="enhanced-sequence">
+				<param name="sequence_name">hibernate_unique_key</param>
+				<param name="force_table_use">true</param>
+				<param name="optimizer">legacy-hilo</param>
+				<param name="value_column">next_hi</param>
+				<param name="increment_size">32767</param>
+				<param name="initial_value">32767</param>
+			</generator>
 		</id>
 		
 		<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/resource/references/ReferenceImpl.java b/src/main/java/org/olat/resource/references/ReferenceImpl.java
index 2e7dbbd00ee..bfa02782cd6 100644
--- a/src/main/java/org/olat/resource/references/ReferenceImpl.java
+++ b/src/main/java/org/olat/resource/references/ReferenceImpl.java
@@ -42,6 +42,7 @@ import javax.persistence.TemporalType;
 import javax.persistence.Version;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.core.id.Persistable;
 import org.olat.core.logging.AssertException;
 import org.olat.resource.OLATResource;
@@ -68,7 +69,14 @@ public class ReferenceImpl implements Persistable, Reference {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="reference_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/upgrade/model/BGAreaUpgrade.hbm.xml b/src/main/java/org/olat/upgrade/model/BGAreaUpgrade.hbm.xml
index 9bdf3401cf6..cc990f6ef00 100644
--- a/src/main/java/org/olat/upgrade/model/BGAreaUpgrade.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/BGAreaUpgrade.hbm.xml
@@ -10,7 +10,14 @@
         	type="long"
         	column="area_id"
         	unsaved-value="null">
-            <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
         </id>
         
         <version name="version" access="field" column="version" type="int" />
diff --git a/src/main/java/org/olat/upgrade/model/BGContext2Resource.hbm.xml b/src/main/java/org/olat/upgrade/model/BGContext2Resource.hbm.xml
index 7c02db6d0ef..02fcd170b4e 100644
--- a/src/main/java/org/olat/upgrade/model/BGContext2Resource.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/BGContext2Resource.hbm.xml
@@ -10,7 +10,14 @@
         	type="long"
         	column="groupcontextresource_id"
         	unsaved-value="null">
-            <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
         </id>
         
         <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/upgrade/model/BGContextImpl.hbm.xml b/src/main/java/org/olat/upgrade/model/BGContextImpl.hbm.xml
index a1435c68124..b1a248b9a96 100644
--- a/src/main/java/org/olat/upgrade/model/BGContextImpl.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/BGContextImpl.hbm.xml
@@ -10,7 +10,14 @@
         	type="long"
         	column="groupcontext_id"
         	unsaved-value="null">
-            <generator class="hilo" />
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
         </id>
         
         <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/upgrade/model/BGResourceRelation.hbm.xml b/src/main/java/org/olat/upgrade/model/BGResourceRelation.hbm.xml
index 2bbd7396c2f..f9022de9787 100644
--- a/src/main/java/org/olat/upgrade/model/BGResourceRelation.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/BGResourceRelation.hbm.xml
@@ -6,7 +6,14 @@
 <hibernate-mapping default-lazy="false">
 	<class name="org.olat.upgrade.model.BGResourceRelation" table="o_gp_business_to_resource">
 		<id name="key" type="long" column="g_id" unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 		
 		<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/upgrade/model/BookmarkImpl.hbm.xml b/src/main/java/org/olat/upgrade/model/BookmarkImpl.hbm.xml
index 60381050147..da8394703ed 100644
--- a/src/main/java/org/olat/upgrade/model/BookmarkImpl.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/BookmarkImpl.hbm.xml
@@ -7,7 +7,14 @@
   <class name="org.olat.upgrade.model.BookmarkImpl" table="o_bookmark">  
 
     <id name="key" column="bookmark_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
     
     <version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/upgrade/model/BusinessGroupUpgrade.hbm.xml b/src/main/java/org/olat/upgrade/model/BusinessGroupUpgrade.hbm.xml
index 89b896409df..f9b5ef61506 100644
--- a/src/main/java/org/olat/upgrade/model/BusinessGroupUpgrade.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/BusinessGroupUpgrade.hbm.xml
@@ -16,7 +16,14 @@
 			type="long" 
 			column="group_id" 
 			unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 		<property name="version" access="field" column="version" type="int"/>
 		<property name="lastModified" column="lastmodified" type="timestamp" />
diff --git a/src/main/java/org/olat/upgrade/model/DBMailAttachmentData.hbm.xml b/src/main/java/org/olat/upgrade/model/DBMailAttachmentData.hbm.xml
index dcfd4850022..0cfccb8653b 100644
--- a/src/main/java/org/olat/upgrade/model/DBMailAttachmentData.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/DBMailAttachmentData.hbm.xml
@@ -6,7 +6,14 @@
   
   <class name="org.olat.upgrade.model.DBMailAttachmentData" table="o_mail_attachment">  
     <id name="key" column="attachment_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 		<property name="creationDate" column="creationdate" type="timestamp" />
 		<property name="datas" column="datas" type="binary" length="16777215"/>
diff --git a/src/main/java/org/olat/upgrade/model/EPMapUpgrade.java b/src/main/java/org/olat/upgrade/model/EPMapUpgrade.java
index efc831349a5..a02faa8f55d 100644
--- a/src/main/java/org/olat/upgrade/model/EPMapUpgrade.java
+++ b/src/main/java/org/olat/upgrade/model/EPMapUpgrade.java
@@ -29,6 +29,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.basesecurity.SecurityGroupImpl;
 import org.olat.core.id.Persistable;
@@ -50,7 +51,14 @@ public class EPMapUpgrade implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="structure_id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/upgrade/model/EPMapUpgradeToGroupRelation.java b/src/main/java/org/olat/upgrade/model/EPMapUpgradeToGroupRelation.java
index 20ae7ca3c56..14a8be5c062 100644
--- a/src/main/java/org/olat/upgrade/model/EPMapUpgradeToGroupRelation.java
+++ b/src/main/java/org/olat/upgrade/model/EPMapUpgradeToGroupRelation.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.model.GroupImpl;
 import org.olat.core.id.Persistable;
@@ -52,7 +53,14 @@ public class EPMapUpgradeToGroupRelation implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/upgrade/model/InvitationUpgrade.java b/src/main/java/org/olat/upgrade/model/InvitationUpgrade.java
index fd493a09dbd..68b48038e5c 100644
--- a/src/main/java/org/olat/upgrade/model/InvitationUpgrade.java
+++ b/src/main/java/org/olat/upgrade/model/InvitationUpgrade.java
@@ -30,6 +30,7 @@ import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.basesecurity.SecurityGroupImpl;
@@ -53,7 +54,14 @@ public class InvitationUpgrade implements Persistable {
 	
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 
diff --git a/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgrade.hbm.xml b/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgrade.hbm.xml
index a62d920640b..c78c8280cf8 100644
--- a/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgrade.hbm.xml
+++ b/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgrade.hbm.xml
@@ -4,7 +4,14 @@
 	<class name="org.olat.upgrade.model.RepositoryEntryUpgrade" table="o_repositoryentry">
 
 		<id name="key" column="repositoryentry_id" type="long" unsaved-value="null">
-			<generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
 		</id>
 		
 		<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgradeToGroupRelation.java b/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgradeToGroupRelation.java
index ddb7a27d58f..73d538afb7f 100644
--- a/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgradeToGroupRelation.java
+++ b/src/main/java/org/olat/upgrade/model/RepositoryEntryUpgradeToGroupRelation.java
@@ -33,6 +33,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
 import org.olat.basesecurity.Group;
 import org.olat.basesecurity.model.GroupImpl;
 import org.olat.core.id.Persistable;
@@ -51,7 +52,14 @@ public class RepositoryEntryUpgradeToGroupRelation implements Persistable {
 
 	@Id
 	@GeneratedValue(generator = "system-uuid")
-	@GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={
+		@Parameter(name="sequence_name", value="hibernate_unique_key"),
+		@Parameter(name="force_table_use", value="true"),
+		@Parameter(name="optimizer", value="legacy-hilo"),
+		@Parameter(name="value_column", value="next_hi"),
+		@Parameter(name="increment_size", value="32767"),
+		@Parameter(name="initial_value", value="32767")
+	})
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/main/java/org/olat/user/UserImpl.hbm.xml b/src/main/java/org/olat/user/UserImpl.hbm.xml
index d829dacb522..cc6d8517ba7 100644
--- a/src/main/java/org/olat/user/UserImpl.hbm.xml
+++ b/src/main/java/org/olat/user/UserImpl.hbm.xml
@@ -5,7 +5,14 @@
 <hibernate-mapping default-lazy="false">
   <class name="org.olat.user.UserImpl" table="o_user">  
     <id name="key" column="user_id" type="long" unsaved-value="null">
-      <generator class="hilo"/>
+		<generator class="enhanced-sequence">
+			<param name="sequence_name">hibernate_unique_key</param>
+			<param name="force_table_use">true</param>
+			<param name="optimizer">legacy-hilo</param>
+			<param name="value_column">next_hi</param>
+			<param name="increment_size">32767</param>
+			<param name="initial_value">32767</param>
+		</generator>
     </id>
 
 	<version name="version" access="field" column="version" type="int"/>
diff --git a/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0.sql b/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0.sql
index a247f6f14b1..e4dda3c9e2a 100644
--- a/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0.sql
+++ b/src/main/resources/database/mysql/alter_10_x_0_to_11_0_0.sql
@@ -1,5 +1,5 @@
 create table o_as_entry (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    a_attemtps bigint default null,
@@ -27,7 +27,7 @@ alter table o_as_entry add constraint as_entry_to_refentry_idx foreign key (fk_r
 create index idx_as_entry_to_id_idx on o_as_entry (a_assessment_id);
 
 create table o_qti_assessmenttest_session (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_exploded bit not null default 0,
@@ -53,7 +53,7 @@ alter table o_qti_assessmenttest_session add constraint qti_sess_to_identity_idx
 alter table o_qti_assessmenttest_session add constraint qti_sess_to_as_entry_idx foreign key (fk_assessment_entry) references o_as_entry (id);
 
 create table o_qti_assessmentitem_session (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_itemidentifier varchar(64) not null,
@@ -72,7 +72,7 @@ alter table o_qti_assessmentitem_session add constraint qti_itemsess_to_testsess
 create index idx_item_identifier_idx on o_qti_assessmentitem_session (q_itemidentifier);
 
 create table o_qti_assessment_response (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_responseidentifier varchar(64) not null,
@@ -90,7 +90,7 @@ alter table o_qti_assessment_response add constraint qti_resp_to_itemsession_idx
 create index idx_response_identifier_idx on o_qti_assessment_response (q_responseidentifier);
 
 create table o_qti_assessment_marks (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_marks mediumtext default null,
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 7144097fa0a..7ad2d5672a7 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1071,7 +1071,7 @@ create table o_as_user_course_infos (
 );
 
 create table o_as_entry (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    a_attemtps bigint default null,
@@ -1324,7 +1324,7 @@ create table o_mapper (
 
 -- qti 2.1
 create table o_qti_assessmenttest_session (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_exploded bit not null default 0,
@@ -1344,7 +1344,7 @@ create table o_qti_assessmenttest_session (
 );
 
 create table o_qti_assessmentitem_session (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_itemidentifier varchar(64) not null,
@@ -1359,7 +1359,7 @@ create table o_qti_assessmentitem_session (
 );
 
 create table o_qti_assessment_response (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_responseidentifier varchar(64) not null,
@@ -1372,7 +1372,7 @@ create table o_qti_assessment_response (
 );
 
 create table o_qti_assessment_marks (
-   id bigint not null,
+   id bigint not null auto_increment,
    creationdate datetime not null,
    lastmodified datetime not null,
    q_marks mediumtext default null,
diff --git a/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0.sql b/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0.sql
index 435efff5832..6c4a65b3cd8 100644
--- a/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0.sql
+++ b/src/main/resources/database/oracle/alter_10_x_0_to_11_0_0.sql
@@ -1,5 +1,5 @@
 create table o_as_entry (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    a_attemtps number(20) default null,
@@ -31,7 +31,7 @@ create index idx_as_entry_to_id_idx on o_as_entry (a_assessment_id);
 
 
 create table o_qti_assessmenttest_session (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_exploded number default 0 not null,
@@ -60,7 +60,7 @@ alter table o_qti_assessmenttest_session add constraint qti_sess_to_as_entry_idx
 create index idx_qti_sess_to_as_entry_idx on o_qti_assessmenttest_session (fk_assessment_entry);
 
 create table o_qti_assessmentitem_session (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_itemidentifier varchar2(64 char) not null,
@@ -79,7 +79,7 @@ create index idx_itemsess_to_testsess_idx on o_qti_assessmentitem_session (fk_as
 create index idx_item_identifier_idx on o_qti_assessmentitem_session (q_itemidentifier);
 
 create table o_qti_assessment_response (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_responseidentifier varchar2(64 char) not null,
@@ -98,7 +98,7 @@ create index idx_resp_to_itemsession_idx on o_qti_assessment_response (fk_assess
 create index idx_response_identifier_idx on o_qti_assessment_response (q_responseidentifier);
 
 create table o_qti_assessment_marks (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_marks clob default null,
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index facb465728b..49033a0a7c8 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -1102,7 +1102,7 @@ create table o_as_user_course_infos (
 );
 
 create table o_as_entry (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    a_attemtps number(20) default null,
@@ -1354,7 +1354,7 @@ create table o_mapper (
 );
 
 create table o_qti_assessmenttest_session (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_exploded number default 0 not null,
@@ -1374,7 +1374,7 @@ create table o_qti_assessmenttest_session (
 );
 
 create table o_qti_assessmentitem_session (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_itemidentifier varchar2(64 char) not null,
@@ -1389,7 +1389,7 @@ create table o_qti_assessmentitem_session (
 );
 
 create table o_qti_assessment_response (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_responseidentifier varchar2(64 char) not null,
@@ -1402,7 +1402,7 @@ create table o_qti_assessment_response (
 );
 
 create table o_qti_assessment_marks (
-   id number(20) not null,
+   id number(20) GENERATED ALWAYS AS IDENTITY,
    creationdate date not null,
    lastmodified date not null,
    q_marks clob default null,
diff --git a/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0.sql b/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0.sql
index 962de9028fd..c57bccc8cde 100644
--- a/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0.sql
+++ b/src/main/resources/database/postgresql/alter_10_x_0_to_11_0_0.sql
@@ -1,5 +1,5 @@
 create table o_as_entry (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    a_attemtps int8 default null,
@@ -31,7 +31,7 @@ create index idx_as_entry_to_id_idx on o_as_entry (a_assessment_id);
 
 
 create table o_qti_assessmenttest_session (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_exploded bool default false,
@@ -60,7 +60,7 @@ alter table o_qti_assessmenttest_session add constraint qti_sess_to_as_entry_idx
 create index idx_qti_sess_to_as_entry_idx on o_qti_assessmenttest_session (fk_assessment_entry);
 
 create table o_qti_assessmentitem_session (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_itemidentifier varchar(64) not null,
@@ -79,7 +79,7 @@ create index idx_itemsess_to_testsess_idx on o_qti_assessmentitem_session (fk_as
 create index idx_item_identifier_idx on o_qti_assessmentitem_session (q_itemidentifier);
 
 create table o_qti_assessment_response (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_responseidentifier varchar(64) not null,
@@ -98,7 +98,7 @@ create index idx_resp_to_itemsession_idx on o_qti_assessment_response (fk_assess
 create index idx_response_identifier_idx on o_qti_assessment_response (q_responseidentifier);
 
 create table o_qti_assessment_marks (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_marks text default null,
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index 6ac4220d5db..f806e979600 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -1069,7 +1069,7 @@ create table o_as_user_course_infos (
 );
 
 create table o_as_entry (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    a_attemtps int8 default null,
@@ -1323,7 +1323,7 @@ create table o_mapper (
 
 -- qti 2.1
 create table o_qti_assessmenttest_session (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_exploded bool default false,
@@ -1343,7 +1343,7 @@ create table o_qti_assessmenttest_session (
 );
 
 create table o_qti_assessmentitem_session (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_itemidentifier varchar(64) not null,
@@ -1358,7 +1358,7 @@ create table o_qti_assessmentitem_session (
 );
 
 create table o_qti_assessment_response (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_responseidentifier varchar(64) not null,
@@ -1371,7 +1371,7 @@ create table o_qti_assessment_response (
 );
 
 create table o_qti_assessment_marks (
-   id int8 not null,
+   id bigserial,
    creationdate timestamp not null,
    lastmodified timestamp not null,
    q_marks text default null,
diff --git a/src/main/resources/infinispan-config.xml b/src/main/resources/infinispan-config.xml
index 88844a7e829..4cadf5f04a8 100644
--- a/src/main/resources/infinispan-config.xml
+++ b/src/main/resources/infinispan-config.xml
@@ -3,161 +3,140 @@
             xmlns="urn:infinispan:config:7.2"
             xsi:schemaLocation="urn:infinispan:config:7.2 http://www.infinispan.org/schemas/infinispan-config-7.2.xsd">
 
-	<cache-container name="NonTransactionalCacheManager" default-cache="default" statistics="true">
+	<cache-container name="NonTransactionalCacheManager" default-cache="default">
 		<jmx duplicate-domains="true" />
 		<local-cache name="default" />
 
-		<local-cache name="MapperService@mapper" statistics="true">
+		<local-cache name="MapperService@mapper">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="10000" strategy="LIRS" />
+			<eviction max-entries="10000" strategy="LRU" />
 			<expiration max-idle="300000" interval="5000" />
 		</local-cache>
 
-		<local-cache name="OpenMeetingsManager@session" statistics="true">
+		<local-cache name="OpenMeetingsManager@session">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="10000" strategy="LIRS" />
+			<eviction max-entries="10000" strategy="LRU" />
 			<expiration max-idle="300000" interval="5000" />
 		</local-cache>
 		
-		<local-cache name="UserSessionManager@usersession" statistics="true">
+		<local-cache name="UserSessionManager@usersession">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
 			<eviction strategy="NONE" />
 			<expiration max-idle="-1" interval="5000" />
 		</local-cache>
 		
-		<local-cache name="CalendarManager@calendar" statistics="true">
+		<local-cache name="CalendarManager@calendar">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="500" strategy="LIRS" />
+			<eviction max-entries="500" strategy="LRU" />
 			<expiration max-idle="900000" interval="5000" />
 		</local-cache>
 		
-		<local-cache name="AssessmentManager@newpersisting" statistics="true">
+		<local-cache name="AssessmentManager@newpersisting">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="20000" strategy="LIRS" />
+			<eviction max-entries="20000" strategy="LRU" />
 			<expiration max-idle="900000" interval="5000" />
 		</local-cache>
 		
-		<local-cache name="QTIHelper@QTI_xml_Documents" statistics="true">
+		<local-cache name="QTIHelper@QTI_xml_Documents">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="200" strategy="LIRS" />
+			<eviction max-entries="200" strategy="LRU" />
 			<expiration max-idle="180000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="QTIWorks@assessmentItems" statistics="true">
-			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
-			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="1000" strategy="LIRS" />
-			<expiration max-idle="720000" interval="60000" />
-		</local-cache>
-		
-		<local-cache name="QTIWorks@assessmentTests" statistics="true">
+		<local-cache name="WebDAVManager@webdav">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="200" strategy="LIRS" />
-			<expiration max-idle="7200000" interval="120000" />
-		</local-cache>
-		
-		<local-cache name="QTIWorks@ssltStylesheets" statistics="true">
-			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
-			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="200" strategy="NONE" />
-			<expiration max-idle="-1" interval="60000" />
-		</local-cache>
-		
-		<local-cache name="WebDAVManager@webdav" statistics="true">
-			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
-			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="2013" strategy="LIRS" />
+			<eviction max-entries="2013" strategy="LRU" />
 			<expiration max-idle="900000" interval="5000" />
 		</local-cache>
 		
-		<local-cache name="UserManager@username" statistics="true">
+		<local-cache name="UserManager@username">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="200000" strategy="LIRS" />
-			<expiration max-idle="864000000" interval="360000" />
+			<eviction max-entries="20000" strategy="LIRS" />
+			<expiration max-idle="2700000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="UserManager@userfullname" statistics="true">
+		<local-cache name="UserManager@userfullname">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="200000" strategy="LIRS" />
-			<expiration max-idle="864000000" interval="360000" />
+			<eviction max-entries="20000" strategy="LIRS" />
+			<expiration max-idle="2700000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="Velocity@templates" statistics="true">
+		<local-cache name="Velocity@templates">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="7700" strategy="NONE" />
+			<eviction max-entries="7700" strategy="LRU" />
 			<expiration max-idle="-1" lifespan="-1" interval="-1" />
 		</local-cache>
 		
-		<local-cache name="LoginModule@blockafterfailedattempts" statistics="true">
+		<local-cache name="LoginModule@blockafterfailedattempts">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="10000" strategy="LIRS" />
+			<eviction max-entries="10000" strategy="LRU" />
 			<expiration max-idle="300000" lifespan="300000" interval="5000" />
 		</local-cache>
 		
-		<local-cache name="NotificationHelper@userPropertiesCache" statistics="true">
+		<local-cache name="NotificationHelper@userPropertiesCache">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="2000" strategy="LIRS" />
+			<eviction max-entries="2000" strategy="LRU" />
 			<expiration max-idle="120000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="GlossaryItemManager@glossary" statistics="true">
+		<local-cache name="GlossaryItemManager@glossary">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="500" strategy="LIRS" />
+			<eviction max-entries="500" strategy="LRU" />
 			<expiration max-idle="3600000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="WikiManager@wiki" statistics="true">
+		<local-cache name="WikiManager@wiki">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="500" strategy="LIRS" />
+			<eviction max-entries="500" strategy="LRU" />
 			<expiration max-idle="3600000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="CollaborationToolsFactory@tools" statistics="true">
+		<local-cache name="CollaborationToolsFactory@tools">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="5000" strategy="LIRS" />
+			<eviction max-entries="5000" strategy="LRU" />
 			<expiration max-idle="1800000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="CourseFactory@courses" statistics="true">
+		<local-cache name="CourseFactory@courses">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="1000" strategy="LIRS" />
+			<eviction max-entries="1000" strategy="LRU" />
 			<expiration max-idle="3600000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="ProjectBrokerManager@pb" statistics="true">
+		<local-cache name="ProjectBrokerManager@pb" >
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="100" strategy="LIRS" />
+			<eviction max-entries="100" strategy="LRU" />
 			<expiration max-idle="3600000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="FeedManager@feed" statistics="true">
+		<local-cache name="FeedManager@feed">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="1000" strategy="LIRS" />
+			<eviction max-entries="1000" strategy="LRU" />
 			<expiration max-idle="900000" interval="15000" />
 		</local-cache>
 		
-		<local-cache name="Path@feed" statistics="true">
+		<local-cache name="Path@feed">
 			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
 			<transaction mode="NONE" auto-commit="true" />
-			<eviction max-entries="1000" strategy="LIRS" />
+			<eviction max-entries="1000" strategy="LRU" />
 			<expiration max-idle="900000" interval="15000" />
 		</local-cache>
 	</cache-container>
diff --git a/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs-local.xml b/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs-local.xml
new file mode 100644
index 00000000000..6d0f19d9d42
--- /dev/null
+++ b/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs-local.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Hibernate, Relational Persistence for Idiomatic Java
+  ~
+  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
+  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
+  -->
+<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns="urn:infinispan:config:8.0"
+            xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd">
+
+   <!-- This configuration is suitable for non-clustered environments, where only single instance accesses the DB -->
+   <cache-container name="SampleCacheManager" statistics="false" default-cache="the-default-cache" shutdown-hook="DEFAULT">
+      <jmx duplicate-domains="true"/>
+
+      <local-cache-configuration name="the-default-cache" statistics="false" />
+
+      <!-- Default configuration is appropriate for entity/collection caching. -->
+      <local-cache-configuration name="entity" simple-cache="true" statistics="false" statistics-available="false">
+         <transaction mode="NONE" />
+         <eviction max-entries="10000" strategy="LRU"/>
+         <expiration max-idle="100000" interval="5000"/>
+      </local-cache-configuration>
+
+      <!-- A config appropriate for query caching. Does not replicate queries. -->
+      <local-cache-configuration name="local-query" simple-cache="true" statistics="false" statistics-available="false">
+         <transaction mode="NONE" />
+         <eviction max-entries="10000" strategy="LRU"/>
+         <expiration max-idle="100000" interval="5000"/>
+      </local-cache-configuration>
+
+      <local-cache-configuration name="timestamps" simple-cache="true" statistics="false" statistics-available="false">
+         <locking concurrency-level="1000" acquire-timeout="15000"/>
+         <!-- Explicitly non transactional -->
+         <transaction mode="NONE"/>
+         <!--  Don't ever evict modification timestamps -->
+         <eviction strategy="NONE"/>
+         <expiration interval="0"/>
+      </local-cache-configuration>
+
+      <!-- When providing custom configuration, always make this cache local and non-transactional.
+           To avoid possible leaks, use expiration (max idle time). Optimize for speed.-->
+      <local-cache-configuration name="pending-puts" simple-cache="true" statistics="false" statistics-available="false">
+         <transaction mode="NONE"/>
+         <expiration max-idle="60000" />
+      </local-cache-configuration>
+   </cache-container>
+
+</infinispan>
diff --git a/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs.xml b/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs.xml
new file mode 100644
index 00000000000..6d0f19d9d42
--- /dev/null
+++ b/src/main/resources/org/hibernate/cache/infinispan/builder/infinispan-configs.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Hibernate, Relational Persistence for Idiomatic Java
+  ~
+  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
+  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
+  -->
+<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns="urn:infinispan:config:8.0"
+            xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd">
+
+   <!-- This configuration is suitable for non-clustered environments, where only single instance accesses the DB -->
+   <cache-container name="SampleCacheManager" statistics="false" default-cache="the-default-cache" shutdown-hook="DEFAULT">
+      <jmx duplicate-domains="true"/>
+
+      <local-cache-configuration name="the-default-cache" statistics="false" />
+
+      <!-- Default configuration is appropriate for entity/collection caching. -->
+      <local-cache-configuration name="entity" simple-cache="true" statistics="false" statistics-available="false">
+         <transaction mode="NONE" />
+         <eviction max-entries="10000" strategy="LRU"/>
+         <expiration max-idle="100000" interval="5000"/>
+      </local-cache-configuration>
+
+      <!-- A config appropriate for query caching. Does not replicate queries. -->
+      <local-cache-configuration name="local-query" simple-cache="true" statistics="false" statistics-available="false">
+         <transaction mode="NONE" />
+         <eviction max-entries="10000" strategy="LRU"/>
+         <expiration max-idle="100000" interval="5000"/>
+      </local-cache-configuration>
+
+      <local-cache-configuration name="timestamps" simple-cache="true" statistics="false" statistics-available="false">
+         <locking concurrency-level="1000" acquire-timeout="15000"/>
+         <!-- Explicitly non transactional -->
+         <transaction mode="NONE"/>
+         <!--  Don't ever evict modification timestamps -->
+         <eviction strategy="NONE"/>
+         <expiration interval="0"/>
+      </local-cache-configuration>
+
+      <!-- When providing custom configuration, always make this cache local and non-transactional.
+           To avoid possible leaks, use expiration (max idle time). Optimize for speed.-->
+      <local-cache-configuration name="pending-puts" simple-cache="true" statistics="false" statistics-available="false">
+         <transaction mode="NONE"/>
+         <expiration max-idle="60000" />
+      </local-cache-configuration>
+   </cache-container>
+
+</infinispan>
-- 
GitLab