diff --git a/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js b/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js
index 9b6641b991c2142cc0d625445aea61232f70f7b1..246829a0939ec787dc3120eb207de15ecf92524a 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js
@@ -7,22 +7,21 @@ import("Sql_lib");
 import("KeywordRegistry_basic");
 
 var sqlHelper = new SqlMaskingUtils();
-var affectedIds;
 
 var sqlQuery = newSelect("CONTRACTID, " 
                     + sqlHelper.concat(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | ")
                     + " as TITLECOLUMN, " 
                     + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", 
                             KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]) 
-                    + " as DESCCOLUMN, CONTRACTCODE, ORGANISATION.NAME, CUSTOMERCODE " )
+                    + " as DESCCOLUMN, CONTRACTCODE, ORGANISATION.NAME, CUSTOMERCODE")
                 .from("CONTRACT")
                 .join("CONTACT", "CONTRACT.CONTACT_ID = CONTACTID")
                 .join("ORGANISATION", "ORGANISATIONID = CONTACT.ORGANISATION_ID")
-                .orderBy("CONTRACTCODE")
+                .orderBy("CONTRACTCODE");
 
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    sqlQuery.where("CONTRACT.CONTRACTID", affectedIds, SqlBuilder.IN())
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("CONTRACT.CONTRACTID", affectedIds, SqlBuilder.IN());
 }
 
 result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js b/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js
index b2022eb648b08cd5b436a248d35430560222f5e7..8e45835b1830cd62337b7379d863b8322472b63e 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js
@@ -1,28 +1,26 @@
 import("system.SQLTYPES");
-import("system.translate");
 import("system.result");
 import("system.vars");
-import("system.calendars");
-import("system.db");
+import("system.translate");
 import("Keyword_lib");
 import("Sql_lib");
 import("KeywordRegistry_basic");
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
-queryCondition = "";
+var sqlHelper = new SqlMaskingUtils();
+
+var sqlQuery = newSelect("OFFERID, " 
+                        + sqlHelper.concat([sqlHelper.cast("OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | ")
+                        + " as TITLECOLUMN, " 
+                        + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)])  
+                        + " as DESCCOLUMN, OFFERCODE, ORGANISATION.NAME, CUSTOMERCODE")
+                .from("OFFER")
+                .join("CONTACT", "OFFER.CONTACT_ID = CONTACTID")
+                .join("ORGANISATION", "ORGANISATIONID = CONTACT.ORGANISATION_ID")
+                .orderBy("OFFERCODE");
+
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    queryCondition = "where OFFERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
-    //TODO: refactor this for incremental indexer (injections?)
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("OFFER.OFFERID", affectedIds, SqlBuilder.IN());
 }
-sqlHelper = new SqlMaskingUtils();
-sqlQuery = "select OFFERID, " 
-    + sqlHelper.concat([sqlHelper.cast("OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | ")
-    + " as TITLECOLUMN, " 
-    + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)])  
-    + " as DESCCOLUMN, OFFERCODE, ORGANISATION.NAME, CUSTOMERCODE " 
-    + " from OFFER "
-    + " join CONTACT on OFFER.CONTACT_ID = CONTACTID "
-    + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID "
-    + queryCondition + " order by OFFERCODE ";
+
 result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/organisation/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/organisation/affectedIds.js
index 2741393ffd7c0907b067f6250129b5db6373eab4..dcf9a80b48190e9bed315bae39cf84fc1bc113af 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/organisation/affectedIds.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/organisation/affectedIds.js
@@ -19,20 +19,26 @@ switch (tableName)
         res = [idValue];
         break;    
     case "ORGANISATION":
-        res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID is null and CONTACT.ORGANISATION_ID = '" + idValue + "'");
+        res = newSelect("CONTACT.CONTACTID")
+                    .from("CONTACT")
+                    .where("CONTACT.PERSON_ID is null")
+                    .and("CONTACT.ORGANISATION_ID", idValue)
+                    .arrayColumn();
         break;
     case "ADDRESS":
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
-            return db.array(db.COLUMN, ["select ADDRESS.CONTACT_ID from ADDRESS where ADDRESS.ADDRESSID = ?", [
-                    [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")]
-            ]]);
+            return newSelect("ADDRESS.CONTACT_ID")
+                    .from("ADDRESS")
+                    .where("ADDRESS.ADDRESSID", id)
+                    .arrayColumn();
         });
         break;
     case "COMMUNICATION":
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
-            return db.array(db.COLUMN, ["select COMMUNICATION.CONTACT_ID from COMMUNICATION where COMMUNICATIONID = ?", [
-                    [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")]
-            ]]);
+            return newSelect("COMMUNICATION.CONTACT_ID")
+                    .from("COMMUNICATION")
+                    .where("COMMUNICATION.COMMUNICATIONID", id)
+                    .arrayColumn();
         });
         break;
 }
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js b/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js
index bbcf88e142807d6dc584df47ee496b22912a63b8..4c8439051784ec1a0e19cfbf28a1e4c4b1209114 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js
@@ -1,33 +1,31 @@
-import("system.translate");
 import("system.result");
 import("system.vars");
-import("system.calendars");
-import("system.db");
+import("system.translate");
 import("Sql_lib");
 import("Communication_lib");
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
+var sqlHelper = new SqlMaskingUtils();
+
+var sqlQuery = newSelect("CONTACT.CONTACTID "
+                            + "," + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]) 
+                            + " as TITLECOLUMN "
+                            + "," + sqlHelper.concat([
+                                 sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
+                                    ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
+                                ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"])
+                                ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
+                                ], " | ") + " as DESCCOLUMN "
+                            //additional indexed fields
+                            + ",ORGANISATION.NAME, COMMUNICATION.ADDR")
+                .from("ORGANISATION")
+                .join("CONTACT", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null")
+                .leftJoin("ADDRESS", "defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID", "defaultAddress")
+                .leftJoin("COMMUNICATION", "defaultAddress.ADDRESSID = COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
+                .orderBy("CONTACT.CONTACTID");
+                
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    queryCondition = "where CONTACT.CONTACTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
-    //TODO: refactor this for incremental indexer (injections?)
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("CONTACT.CONTACTID", affectedIds, SqlBuilder.IN());
 }
-sqlHelper = new SqlMaskingUtils();
-sqlQuery = "select CONTACT.CONTACTID "
-    + "," + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]) 
-    + " as TITLECOLUMN "
-    + "," + sqlHelper.concat([
-         sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
-            ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
-        ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"])
-        ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
-        ], " | ") + " as DESCCOLUMN "
-    //additional indexed fields
-    + ",ORGANISATION.NAME, COMMUNICATION.ADDR "
-    + " from ORGANISATION "
-    + " join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null "
-    + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID "
-    + " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID "
-    + (queryCondition || "") 
-    + " order by CONTACT.CONTACTID ";
+
 result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js
index 488e44a0b18fefa686a5a6640db77c4564faae81..debeb72a7a51961a42cdad671ca878c705aad63f 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js
@@ -19,23 +19,32 @@ switch (tableName)
         res = [idValue];
         break;    
     case "PERSON":
-        res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID = '" + idValue + "'");
+        res = newSelect("CONTACT.CONTACTID")
+                    .from("CONTACT")
+                    .where("CONTACT.PERSON_ID", idValue)
+                    .arrayColumn();
         break;
     case "ORGANISATION":
-        res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID is not null and CONTACT.ORGANISATION_ID = '" + idValue + "'");
+        res = newSelect("CONTACT.CONTACTID")
+                    .from("CONTACT")
+                    .where("CONTACT.PERSON_ID is not null")
+                    .and("CONTACT.ORGANISATION_ID", idValue)
+                    .arrayColumn();
         break;
     case "ADDRESS":
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
-            return db.array(db.COLUMN, ["select ADDRESS.CONTACT_ID from ADDRESS where ADDRESS.ADDRESSID = ?", [
-                    [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")]
-            ]]);
+            return newSelect("ADDRESS.CONTACT_ID")
+                    .from("ADDRESS")
+                    .where("ADDRESS.ADDRESSID", id)
+                    .arrayColumn();
         });
         break;
     case "COMMUNICATION":
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
-            return db.array(db.COLUMN, ["select COMMUNICATION.CONTACT_ID from COMMUNICATION where COMMUNICATIONID = ?", [
-                    [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")]
-            ]]);
+            return newSelect("COMMUNICATION.CONTACT_ID")
+                    .from("COMMUNICATION")
+                    .where("COMMUNICATION.COMMUNICATIONID", id)
+                    .arrayColumn();
         });
         break;
 }
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/person/query.js b/aliasDefinition/Data_alias/indexsearchgroups/person/query.js
index 719efe080e627c040b043e12f994c936dcf855c6..3ed54fc08c605189fa2ca5de442e8dec088f9c1b 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/person/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/person/query.js
@@ -6,29 +6,29 @@ import("system.db");
 import("Sql_lib");
 import("Communication_lib");
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
+var sqlHelper = new SqlMaskingUtils();
+
+var sqlQuery = newSelect("CONTACT.CONTACTID "
+                        + "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]) 
+                        + " as TITLECOLUMN "
+                        + "," + sqlHelper.concat([
+                             sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
+                                ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
+                            ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"])
+                            ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
+                            ], " | ") + " as DESCCOLUMN "
+                        //additional indexed fields
+                        + ",ORGANISATION.NAME, COMMUNICATION.ADDR")
+                .from("PERSON")
+                .join("CONTACT", "CONTACT.PERSON_ID = PERSON.PERSONID")
+                .join("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
+                .leftJoin("ADDRESS", "defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID", "defaultAddress")
+                .leftJoin("COMMUNICATION", "COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
+                .orderBy("CONTACT.CONTACTID");
+
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    queryCondition = "where CONTACT.CONTACTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
-    //TODO: refactor this for incremental indexer (injections?)
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("CONTACT.CONTACTID", affectedIds, SqlBuilder.IN());
 }
-sqlHelper = new SqlMaskingUtils();
-sqlQuery = "select CONTACT.CONTACTID "
-    + "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]) 
-    + " as TITLECOLUMN "
-    + "," + sqlHelper.concat([
-         sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
-            ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
-        ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"])
-        ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
-        ], " | ") + " as DESCCOLUMN "
-    //additional indexed fields
-    + ",ORGANISATION.NAME, COMMUNICATION.ADDR "
-    + " from PERSON "
-    + " join CONTACT on CONTACT.PERSON_ID = PERSON.PERSONID "
-    + " join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID "
-    + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID "
-    + " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID "
-    + (queryCondition || "") 
-    + " order by CONTACT.CONTACTID ";
+
 result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/product/query.js b/aliasDefinition/Data_alias/indexsearchgroups/product/query.js
index 9f8b8240c20e0a74ef734bcc01787ba192206ffa..ae4c7967393e5ae45974a68d041eb6bfa763bfe9 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/product/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/product/query.js
@@ -1,24 +1,23 @@
 import("system.result");
 import("system.vars");
-import("system.calendars");
-import("system.db");
+import("system.translate");
 import("Keyword_lib");
 import("Sql_lib");
 import("KeywordRegistry_basic");
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
-queryCondition = "";
+var sqlHelper = new SqlMaskingUtils();
+
+var sqlQuery = newSelect("PRODUCTID, " 
+                        + sqlHelper.concat(["PRODUCTCODE", "PRODUCTNAME"], " | ")
+                        + " as TITLECOLUMN, " 
+                        + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODEID")
+                        + " as DESCCOLUMN, PRODUCTCODE ")
+                .from("PRODUCT")
+                .orderBy("PRODUCTCODE");
+
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    queryCondition = "where PRODUCTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
-    //TODO: refactor this for incremental indexer (injections?)
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("PRODUCT.PRODUCTID", affectedIds, SqlBuilder.IN());
 }
-sqlHelper = new SqlMaskingUtils();
-sqlQuery = "select PRODUCTID, " 
-    + sqlHelper.concat(["PRODUCTCODE", "PRODUCTNAME"], " | ")
-    + " as TITLECOLUMN, " 
-    + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODEID")
-    + " as DESCCOLUMN, PRODUCTCODE " 
-    + " from PRODUCT "
-    + queryCondition + " order by PRODUCTCODE ";
+
 result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js
index f40738184c61fdaf0fac3f1a19606c292d6d2fe2..e3336377e4cff90461b0bfda6a56b2254108770f 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js
@@ -1,27 +1,26 @@
 import("system.SQLTYPES");
 import("system.result");
 import("system.vars");
-import("system.calendars");
-import("system.db");
+import("system.translate");
 import("Sql_lib");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
-queryCondition = "";
+var sqlHelper = new SqlMaskingUtils();
+
+var sqlQuery = newSelect("SALESORDERID, " 
+                        + sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesorderState(), "SALESORDER.STATUS")], " | ")
+                        + " as TITLECOLUMN, " 
+                        + sqlHelper.concat(["ORGANISATION.NAME"], " | ") 
+                        + " as DESCCOLUMN, SALESORDERCODE, ORGANISATION.NAME, CUSTOMERCODE")
+                .from("SALESORDER")
+                .join("CONTACT", "SALESORDER.CONTACT_ID = CONTACTID")
+                .join("ORGANISATION", "ORGANISATIONID = CONTACT.ORGANISATION_ID")
+                .orderBy("SALESORDERCODE");
+
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    queryCondition = "where SALESORDERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
-    //TODO: refactor this for incremental indexer (injections?) ----> use SqlBuilder Lib
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("SALESORDER.SALESORDERID", affectedIds, SqlBuilder.IN());
 }
-sqlHelper = new SqlMaskingUtils();
-sqlQuery = "select SALESORDERID, " 
-    + sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesorderState(), "SALESORDER.STATUS")], " | ")
-    + " as TITLECOLUMN, " 
-    + sqlHelper.concat(["ORGANISATION.NAME"], " | ") 
-    + " as DESCCOLUMN, SALESORDERCODE, ORGANISATION.NAME, CUSTOMERCODE "
-    + " from SALESORDER "
-    + " join CONTACT on SALESORDER.CONTACT_ID = CONTACTID "
-    + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID "
-    + queryCondition + " order by SALESORDERCODE ";
+
 result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js
index 079117e9028cc73670823798d0325902cc451055..2c0c8f45233ac9fb30996c54fee3f07192835caa 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js
@@ -1,26 +1,24 @@
-import("system.translate");
 import("system.result");
 import("system.vars");
-import("system.calendars");
-import("system.db");
+import("system.translate");
 import("Keyword_lib");
 import("Sql_lib");
 import("KeywordRegistry_basic");
 
-var sqlQuery, sqlHelper, queryCondition, affectedIds;
-queryCondition = "";
+var sqlHelper = new SqlMaskingUtils();
+
+var sqlQuery = newSelect("SALESPROJECTID, PROJECTTITLE as TITLECOLUMN, " 
+                        + sqlHelper.concat([
+                            "'" + translate.text("Status") + ":'",  KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATUS"),
+                            "'| " + translate.text("Phase") + ":'",  KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "PHASE")
+                          ]) 
+                        + " as DESCCOLUMN, PROJECTCODE")
+                .from("SALESPROJECT")
+                .orderBy("PROJECTCODE");
+
 if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-    queryCondition = "where SALESPROJECTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
-    //TODO: refactor this for incremental indexer (injections?)
+    var affectedIds = vars.get("$local.idvalue");
+    sqlQuery.whereIfSet("SALESPROJECT.SALESPROJECTID", affectedIds, SqlBuilder.IN());
 }
-sqlHelper = new SqlMaskingUtils();
-sqlQuery = "select SALESPROJECTID, PROJECTTITLE as TITLECOLUMN, " 
-    + sqlHelper.concat([
-        "'" + translate.text("Status") + ":'",  KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATUS"),
-        "'| " + translate.text("Phase") + ":'",  KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "PHASE")
-      ]) 
-    + " as DESCCOLUMN, PROJECTCODE " 
-    + " from SALESPROJECT "
-    + queryCondition + " order by PROJECTCODE ";
+
 result.string(sqlQuery);
\ No newline at end of file