diff --git a/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate
index 7a480c5443b4c6216b3686ca5548c2c93f884dc4..83ca8097897ab193e2678ca3658f2fb21d577236 100644
Binary files a/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate and b/openbis-ipad/Research/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py b/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
index 72d008b0d79d98662dcb1959217e18012998dad4..4e9317dcab7f33333d33eb05e2e4141a6d4f86c4 100644
--- a/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
+++ b/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
@@ -14,6 +14,14 @@ def json_encoded_value(coll):
 	"""Utility function for converting a list into a json-encoded list"""
 	return ObjectMapper().writeValueAsString(coll)
 
+def json_empty_list():
+  """Utility function to return an json-encoded empty list"""
+  return json_encoded_value([])
+
+def json_empty_dict():
+  """Utility function to return an json-encoded empty dictionary"""
+  return json_encoded_value({})
+
 class RequestHandler(object):
 	"""Abstract superclass for the handlers for concrete requests like ROOT.
 
@@ -286,7 +294,7 @@ def navigation_layer_simple(summary_header, summary, code, children):
 	nav_dict['CATEGORY'] = None
 	children_permids = [entity.getPermId() for entity in children]
 	nav_dict['CHILDREN'] = json_encoded_value(children_permids)
-	nav_dict['PROPERTIES'] = json_encoded_value([])
+	nav_dict['PROPERTIES'] = json_empty_list()
 	nav_dict['ROOT_LEVEL'] = True
 	return nav_dict
 
@@ -345,7 +353,11 @@ def sample_to_dict_with_props(sample, want_props):
 	"""Convert a sample to a dictionary. Uses the NAME property to construct the summary. Returns empty children. Callers may need to modify the summary and children as well"""
 	sample_dict = {}
 	sample_dict['SUMMARY_HEADER'] = sample.getCode()
-	summary = u"Name: " + sample.getPropertyValue("NAME")
+	name = sample.getPropertyValue("NAME")
+	if name is not None:
+		summary = u"Name: " + name
+	else:
+		summary = u"??"
 	sample_dict['SUMMARY'] = summary
 	sample_dict['IDENTIFIER'] = sample.getSampleIdentifier()
 	sample_dict['PERM_ID'] = sample.getPermId()
@@ -370,17 +382,17 @@ def sample_to_dict_with_props(sample, want_props):
 
 def oligo_to_dict(oligo, want_props):
 	sample_dict = sample_to_dict_with_props(oligo, want_props)
-	summary = u"Project: " + oligo.getPropertyValue("PROJECT")
+	summary = u"Project: " + unicode(oligo.getPropertyValue("PROJECT"))
 	summary = summary + "\n"
-	summary = summary + "Target: " + oligo.getPropertyValue("TARGET")
+	summary = summary + "Target: " + unicode(oligo.getPropertyValue("TARGET"))
 	sample_dict['SUMMARY'] = summary
 	return sample_dict
 
 def antibody_to_dict(antibody, want_props):
 	sample_antibody_dict = sample_to_dict_with_props(antibody, want_props)
-	summary = u"Name: " + antibody.getPropertyValue("NAME")
+	summary = u"Name: " + unicode(antibody.getPropertyValue("NAME"))
 	summary = summary + u"\n"
-	summary = summary + u"Epitope: " + antibody.getPropertyValue("EPITOPE")
+	summary = summary + u"Epitope: " + unicode(antibody.getPropertyValue("EPITOPE"))
 	sample_antibody_dict['SUMMARY'] = summary
 	return sample_antibody_dict
 
@@ -425,7 +437,7 @@ def plasmid_to_dict_with_images(plasmid, children_map, data_sets):
 	
 def yeast_to_dict(yeast, children_map, want_props):
 		sample_dict = sample_to_dict_with_props(yeast, want_props)
-		summary = u"Name: " + yeast.getPropertyValue("YEAST_STRAIN_NAME")
+		summary = u"Name: " + unicode(yeast.getPropertyValue("YEAST_STRAIN_NAME"))
 		sample_dict['SUMMARY'] = summary
 
 		children = [child.getPermId() for child in children_map.get(yeast.getSampleIdentifier(), [])]
@@ -436,7 +448,7 @@ def yeast_to_dict(yeast, children_map, want_props):
 def bacteria_to_dict(bacteria, with_props):
 	sample_dict = sample_to_dict_with_props(bacteria, with_props)
 	name = bacteria.getPropertyValue("BACTERIA_STRAIN_NAME")
-	summary = u"Name: " + name
+	summary = u"Name: " + unicode(name)
 	sample_dict['SUMMARY'] = summary
 	return sample_dict
 
diff --git a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate
index 083b70b0ba5e2dcf29172973c068078326816f5e..fc6eab8e16f508767f2116fe6d869c803964d9b2 100644
Binary files a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate and b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ