diff --git a/openbis-ipad/BisKit/Classes/CISDOBIpadService.h b/openbis-ipad/BisKit/Classes/CISDOBIpadService.h
index 50def3e2c910b055063a0402400959ef7278d057..07410da84536fc3fe0bfdb92ec7e0f204b05bdab 100644
--- a/openbis-ipad/BisKit/Classes/CISDOBIpadService.h
+++ b/openbis-ipad/BisKit/Classes/CISDOBIpadService.h
@@ -52,8 +52,8 @@ enum CISOBIpadServiceErrorCode {
 //! Log the user into the openBIS instance
 - (CISDOBAsyncCall *)loginUser:(NSString *)user password:(NSString *)password;
 
-//! Get all entities from the openBIS ipad service. The success message will be invoked with a collection of CISDOBIpadRawEntity objects.
-- (CISDOBAsyncCall *)listAllEntities;
+//! Get all root-level entities from the openBIS ipad service. The success message will be invoked with a collection of CISDOBIpadRawEntity objects.
+- (CISDOBAsyncCall *)listRootLevelEntities;
 
 @end
 
diff --git a/openbis-ipad/BisKit/Classes/CISDOBIpadService.m b/openbis-ipad/BisKit/Classes/CISDOBIpadService.m
index bc81e9a3d785d12f10af964f6e447fcb6549861c..795e0a45b6c325283c9449cc274301775f76e60b 100644
--- a/openbis-ipad/BisKit/Classes/CISDOBIpadService.m
+++ b/openbis-ipad/BisKit/Classes/CISDOBIpadService.m
@@ -77,7 +77,7 @@ NSString *const CISDOBIpadServiceErrorDomain = @"CISDOBIpadServiceErrorDomain";
 - (void)rememberIpadService:(NSArray *)services notifying:(CISDOBIpadServiceCall *)iPadCall
 {    
     for (NSDictionary *service in services) {
-        if ([@"ipad-read-service" isEqualToString: [service objectForKey: @"serviceKey"]]) {
+        if ([@"ipad-read-service-v1" isEqualToString: [service objectForKey: @"serviceKey"]]) {
             _ipadReadService = service;
             break;
         }
@@ -141,7 +141,7 @@ NSString *const CISDOBIpadServiceErrorDomain = @"CISDOBIpadServiceErrorDomain";
     return iPadCall;
 }
 
-- (CISDOBAsyncCall *)listAllEntities;
+- (CISDOBAsyncCall *)listRootLevelEntities;
 {
     CISDOBAsyncCall *connectionCall = [_connection
         createReportFromDataStore: [_ipadReadService objectForKey: @"dataStoreCode"]
diff --git a/openbis-ipad/BisKit/Tests/CISDOBIpadEntityTest.m b/openbis-ipad/BisKit/Tests/CISDOBIpadEntityTest.m
index 4773ebc669c549c4e1bb396af6bfeb06bdc0e715..f54e3572143c5283674f82ef11eccda2620cbc13 100644
--- a/openbis-ipad/BisKit/Tests/CISDOBIpadEntityTest.m
+++ b/openbis-ipad/BisKit/Tests/CISDOBIpadEntityTest.m
@@ -137,7 +137,7 @@ NSManagedObjectContext* GetDatabaseManagedObjectContext(NSURL* storeURL, NSError
     call = [_service loginUser: GetDefaultUserName() password: GetDefaultUserPassword()];
     [self configureAndRunCallSynchronously: call];
     
-    call = [_service listAllEntities];
+    call = [_service listRootLevelEntities];
     [self configureAndRunCallSynchronously: call];
     
     STAssertNotNil(_callResult, @"The iPad service should have returned some entities.");
diff --git a/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m b/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m
index c0b46a1ff4389115fffd6ec068c67ce00e1c366e..13781a398ef2f68e000dfd0a67487e4f1f366499 100644
--- a/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m
+++ b/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m
@@ -58,7 +58,7 @@
     call = [_service loginUser: GetDefaultUserName() password: GetDefaultUserPassword()];
     [self configureAndRunCallSynchronously: call];
     
-    call = [_service listAllEntities];
+    call = [_service listRootLevelEntities];
     [self configureAndRunCallSynchronously: call];
     
     STAssertNotNil(_callResult, @"The iPad service should have returned some entities.");
diff --git a/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m b/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m
index 854dc70356b7250ed70b197b1dbf30ebc7dd94d1..379714f9f24852596cac0035faa52fba1778b165 100644
--- a/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m
+++ b/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m
@@ -52,7 +52,7 @@
 - (NSDictionary *)extractIpadService:(NSArray *)services
 {
     for (NSDictionary *service in services) {
-        if ([@"ipad-read-service" isEqualToString: [service objectForKey: @"serviceKey"]]) {
+        if ([@"ipad-read-service-v1" isEqualToString: [service objectForKey: @"serviceKey"]]) {
             return service;
         }
     }
@@ -80,7 +80,7 @@
     [self configureAndRunCallSynchronously: call];
     STAssertNotNil(_callResult, @"There should be some aggregation services on the server");
     NSDictionary *service = [self extractIpadService: _callResult];    
-    STAssertNotNil(service, @"There should be a service with key \"ipad-read-service\". Services: %@", _callResult);
+    STAssertNotNil(service, @"There should be a service with key \"ipad-read-service-v1\". Services: %@", _callResult);
     
     call =
         [_connection
@@ -88,9 +88,9 @@
             aggregationService: [service objectForKey: @"serviceKey"]
             parameters: nil];
     [self configureAndRunCallSynchronously: call];
-    STAssertNotNil(_callResult, @"The ipad-read-service should have returned some data.");
+    STAssertNotNil(_callResult, @"The ipad-read-service-v1 should have returned some data.");
     NSArray *rows = [_callResult objectForKey: @"rows"];
-    STAssertTrue([rows count] > 0, @"The ipad-read-service should have returned some data.");
+    STAssertTrue([rows count] > 0, @"The ipad-read-service-v1 should have returned some data.");
     for (NSArray* row in rows)
         [self assertServiceDataRowIsParsable: row];
 }
diff --git a/openbis-ipad/Research/BisMac.xcodeproj/project.pbxproj b/openbis-ipad/Research/BisMac.xcodeproj/project.pbxproj
index b19d40381e5e0a83b2f636e35b51de7ec91af075..8b086c40e2e82de8fb2f9c4a6e2dfdeca0d275fc 100644
--- a/openbis-ipad/Research/BisMac.xcodeproj/project.pbxproj
+++ b/openbis-ipad/Research/BisMac.xcodeproj/project.pbxproj
@@ -230,9 +230,9 @@
 				3649C8A915EBB2950019AC55 /* CISDOBConnection.m */,
 				3680B1321611B5CE008BA207 /* CISDOBIpadService.h */,
 				3680B1331611B5CE008BA207 /* CISDOBIpadService.m */,
-				36F71E4A1619829300C87277 /* persistent-data-model.xcdatamodeld */,
 				36F71E4D1619834600C87277 /* CISDOBIpadEntity.h */,
 				36F71E4E1619834600C87277 /* CISDOBIpadEntity.m */,
+				36F71E4A1619829300C87277 /* persistent-data-model.xcdatamodeld */,
 			);
 			path = Classes;
 			sourceTree = "<group>";
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 2c7c3f1ba585636ae9e8fcdd019c74b0ec13efdf..ee9d0ddf67788749e8e25cafc2af5ff8a97b7407 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/1/dss/reporting-plugins/ipad-read-service/ipad_read.py b/openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
similarity index 100%
rename from openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service/ipad_read.py
rename to openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
diff --git a/openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service/plugin.properties b/openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service-v1/plugin.properties
similarity index 100%
rename from openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service/plugin.properties
rename to openbis-ipad/ipad-example-data/ipad-ui/1/dss/reporting-plugins/ipad-read-service-v1/plugin.properties
diff --git a/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj b/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj
index 6c808433c5ed69e501646435aa01a3f274986590..ff271f2e65486a36599b63dd7343eabbdfb8047f 100644
--- a/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj
+++ b/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj
@@ -270,17 +270,17 @@
 		36F71ECA161C453D00C87277 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				36F71ED5161C453D00C87277 /* CISDOBShared.h */,
 				36F71ECB161C453D00C87277 /* CISDOBAsyncCall.h */,
 				36F71ECC161C453D00C87277 /* CISDOBAsyncCall.m */,
 				36F71ECD161C453D00C87277 /* CISDOBConnection.h */,
 				36F71ECE161C453D00C87277 /* CISDOBConnection.m */,
-				36F71ECF161C453D00C87277 /* CISDOBIpadEntity.h */,
-				36F71ED0161C453D00C87277 /* CISDOBIpadEntity.m */,
 				36F71ED1161C453D00C87277 /* CISDOBIpadService.h */,
 				36F71ED2161C453D00C87277 /* CISDOBIpadService.m */,
 				36F71ED3161C453D00C87277 /* CISDOBJsonRpcCall.h */,
 				36F71ED4161C453D00C87277 /* CISDOBJsonRpcCall.m */,
-				36F71ED5161C453D00C87277 /* CISDOBShared.h */,
+				36F71ECF161C453D00C87277 /* CISDOBIpadEntity.h */,
+				36F71ED0161C453D00C87277 /* CISDOBIpadEntity.m */,
 				36F71ED6161C453D00C87277 /* persistent-data-model.xcdatamodeld */,
 			);
 			path = Classes;
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 a0a9ed84863af0bb4953eba6b79b3a8a4c227f29..8994f8be6270eae279a08f44d7efa851edd7d4e7 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