diff --git a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/openbis-v3-api.js b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/openbis-v3-api.js
index 73ce951a29cb02a2d406f1bc4f14f20f22a733ee..b574067487c434414724d364569238834e392323 100644
--- a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/openbis-v3-api.js
+++ b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/openbis-v3-api.js
@@ -46,7 +46,6 @@ define(['jquery', 'support/Utils'], function($, stjsUtil) {
 				console.log(msg);
 			}
 		}
-
 	}
 
 	return function(openbisUrl) {
@@ -60,7 +59,7 @@ define(['jquery', 'support/Utils'], function($, stjsUtil) {
 					"params" : [ user, password ]
 				}
 			}).done(function(sessionToken) {
-				if (sessionToken.indexOf(user) > -1) {
+				if (sessionToken && sessionToken.indexOf(user) > -1) {
 				_private.sessionToken = sessionToken;
 				dfd.resolve(sessionToken);
 			} else {
@@ -141,13 +140,28 @@ define(['jquery', 'support/Utils'], function($, stjsUtil) {
 		}
 
 		this.searchSamples = function(sampleSearchCriterion, sampleFetchOptions) {
-			return _private.ajaxRequest({
+			var dfd = $.Deferred();
+
+			_private.ajaxRequest({
 				url : openbisUrl,
 				data : {
 					"method" : "searchSamples",
 					"params" : [ _private.sessionToken, sampleSearchCriterion, sampleFetchOptions ]
 				}
+			}).done(function(samples) {
+				require(['dto/entity/sample/Sample'], function() {
+					var sampleDTOs = {};
+					for(var sampleId in samples) {
+						var sampleJson = samples[sampleId];
+						var newSample = stjsUtil.fromJson(sampleJson);
+						sampleDTOs[newSample.getPermId().getPermId()] = newSample;
+					}
+					dfd.resolve(sampleDTOs);
+				});
+			}).fail(function() {
+				dfd.reject(arguments);
 			});
+			return dfd.promise();
 		}
 
 		this.searchDataSets = function(dataSetSearchCriterion, dataSetFetchOptions) {