diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
index a8ad37b6fbdd422ac6c44b55b3287fdb04f80213..4ec55bff574e62e295410efbf90353f4c755461b 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
@@ -258,16 +258,38 @@ function ServerFacade(openbisServer) {
 	
 
 	//
-	// Others
-	//
-	this.generateCode = function(sampleType, action) {
+	//OLD METHOD
+	/*this.generateCode = function(sampleType, action) {
 		this.openbisServer.countNumberOfSamplesForType(sampleType.code, function(response) {
 			if(response.result || response.result === 0) {
 				action(sampleType.codePrefix + (parseInt(response.result) + 1));
 			}
 		});
-	}
+	}*/
 	
+	this.generateCode = function(sampleType, action) {
+		var prefix = sampleType.codePrefix;
+		this.searchWithType(
+				sampleType.code,
+				"",
+				function(results) {
+					if(results.length == 0)
+						nextcode = prefix + "1";
+					else{
+						var codes = [];
+						for(var idx=0; idx<results.length; idx++){
+							numeric_code = results[idx].code.substring(3); //assuming all codes are 3 letters long!!!!
+							numeric_code = numeric_code.replace("_","");
+							codes[idx] = parseInt(numeric_code); 
+						}
+						codes.sort();
+						var nextid = codes[codes.length-1] + 1;
+						var nextcode = prefix + nextid;
+					}
+					action(nextcode);
+				});
+	}
+		
 	this.deleteDataSets = function(datasetIds, reason, callback) {
 		this.openbisServer.deleteDataSets(datasetIds, reason, "TRASH", callback);
 	}