diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/EntitiesToUpdate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/EntitiesToUpdate.java
new file mode 100644
index 0000000000000000000000000000000000000000..79e4a07cd9a712f7a437187a9472d33a540bd656
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/EntitiesToUpdate.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2010 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.generic.server.dataaccess.db.search;
+
+import java.io.Serializable;
+import java.util.List;
+
+import ch.systemsx.cisd.common.collections.CollectionUtils;
+
+/**
+ * Encapsulates operation kind and data for an update operation to be performed on an index.
+ * 
+ * @author Piotr Buczek
+ */
+public class EntitiesToUpdate implements Serializable
+{
+    public enum IndexUpdateOperationKind
+    {
+        /** update indexed entity */
+        REINDEX,
+
+        /** remove from index */
+        REMOVE
+    }
+
+    private static final long serialVersionUID = 1L;
+
+    private final Class<?> clazz;
+
+    private final List<Long> ids;
+
+    private final IndexUpdateOperationKind operationKind;
+
+    public static EntitiesToUpdate remove(Class<?> clazz, List<Long> ids)
+    {
+        return new EntitiesToUpdate(IndexUpdateOperationKind.REMOVE, clazz, ids);
+    }
+
+    public static EntitiesToUpdate reindex(Class<?> clazz, List<Long> ids)
+    {
+        return new EntitiesToUpdate(IndexUpdateOperationKind.REINDEX, clazz, ids);
+    }
+
+    private EntitiesToUpdate(IndexUpdateOperationKind operationKind, Class<?> clazz,
+            List<Long> ids)
+    {
+        this.clazz = clazz;
+        this.ids = ids;
+        this.operationKind = operationKind;
+    }
+
+    public Class<?> getClazz()
+    {
+        return clazz;
+    }
+
+    public List<Long> getIds()
+    {
+        return ids;
+    }
+
+    public IndexUpdateOperationKind getOperationKind()
+    {
+        return operationKind;
+    }
+
+    @Override
+    public String toString()
+    {
+        return operationKind + " " + clazz.getName() + ": " + CollectionUtils.abbreviate(ids, 10);
+    }
+
+}