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 7345d96e8c7055059da28a7a7001fffdb8691226..70bcb756bcfffa2b3abac7114c2cc4b1481b983c 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/openBIS/openBIS.xcodeproj/project.pbxproj b/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj
index 3c925024885555cece3847ca4cf0adc9afc62f14..dc43368d744b9b98339ec6ded6cd7e9853b3279d 100644
--- a/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj
+++ b/openbis-ipad/openBIS/openBIS.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		362B81EC163FFB6C00127554 /* CISDOBIpadServiceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 362B81EB163FFB6C00127554 /* CISDOBIpadServiceManager.m */; };
 		364D509E161C6ADB00A739B0 /* openBISData.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = 364D509C161C6ADB00A739B0 /* openBISData.sqlite */; };
 		3687D8FF162D3AB500622690 /* openbis-icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 3687D8FD162D3AB500622690 /* openbis-icon-72.png */; };
 		3687D900162D3AB500622690 /* openbis-icon-144.png in Resources */ = {isa = PBXBuildFile; fileRef = 3687D8FE162D3AB500622690 /* openbis-icon-144.png */; };
@@ -73,6 +74,8 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
+		362B81EA163FFB6C00127554 /* CISDOBIpadServiceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBIpadServiceManager.h; sourceTree = "<group>"; };
+		362B81EB163FFB6C00127554 /* CISDOBIpadServiceManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBIpadServiceManager.m; sourceTree = "<group>"; };
 		364D5098161C6A3600A739B0 /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.md; sourceTree = "<group>"; };
 		364D509C161C6ADB00A739B0 /* openBISData.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = openBISData.sqlite; sourceTree = "<group>"; };
 		3687D8FD162D3AB500622690 /* openbis-icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "openbis-icon-72.png"; sourceTree = "<group>"; };
@@ -279,6 +282,8 @@
 				36F71ED0161C453D00C87277 /* CISDOBIpadEntity.m */,
 				36F71ED1161C453D00C87277 /* CISDOBIpadService.h */,
 				36F71ED2161C453D00C87277 /* CISDOBIpadService.m */,
+				362B81EA163FFB6C00127554 /* CISDOBIpadServiceManager.h */,
+				362B81EB163FFB6C00127554 /* CISDOBIpadServiceManager.m */,
 				36F71ED3161C453D00C87277 /* CISDOBJsonRpcCall.h */,
 				36F71ED4161C453D00C87277 /* CISDOBJsonRpcCall.m */,
 				36F71ED6161C453D00C87277 /* persistent-data-model.xcdatamodeld */,
@@ -457,6 +462,7 @@
 				36F71EE8161C453D00C87277 /* CISDOBJsonRpcCall.m in Sources */,
 				36F71EE9161C453D00C87277 /* persistent-data-model.xcdatamodeld in Sources */,
 				36F97A2E1628123F005D063E /* CISDOBOpenBisModel.m in Sources */,
+				362B81EC163FFB6C00127554 /* CISDOBIpadServiceManager.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
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 48bcf26b924ed9d598bc0dab5e48b311e6dd620a..35f28ec216f2c166b4a44d311abc0302462c7dda 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
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h
index 245d5ddba823aec5e95eb8904c1af8b3d766518d..71d8b0e3bb525ce02abc6bfed11472e2c03d80e4 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h
+++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.h
@@ -23,7 +23,7 @@
 
 #import <UIKit/UIKit.h>
 
-@class CISDOBOpenBisModel;
+@class CISDOBOpenBisModel, CISDOBIpadServiceManager;
 @interface CISDOBAppDelegate : UIResponder <UIApplicationDelegate>
 
 @property (strong, nonatomic) UIWindow *window;
@@ -32,6 +32,7 @@
 @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
 @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
 @property (readonly, strong, nonatomic) CISDOBOpenBisModel *rootOpenBisModel;
+@property (readonly, strong, nonatomic) CISDOBIpadServiceManager *serviceManager;
 
 - (void)saveContext;
 - (NSURL *)applicationDocumentsDirectory;
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
index 476da61e8f9a0ebaf98946b4eca481b3ab24b127..14483242836bf0b7f494661ac697225f4587c4a5 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
@@ -25,6 +25,8 @@
 
 #import "CISDOBMasterViewController.h"
 #import "CISDOBOpenBisModel.h"
+#import "CISDOBIpadServiceManager.h"
+#import "CISDOBAsyncCall.h"
 
 @implementation CISDOBAppDelegate
 
@@ -32,6 +34,7 @@
 @synthesize managedObjectModel = _managedObjectModel;
 @synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
 @synthesize rootOpenBisModel = _rootOpenBisModel;
+@synthesize serviceManager = _serviceManager;
 
 - (void)configureControllers;
 {
@@ -65,6 +68,14 @@
     [self configureControllers];
     CISDOBMasterViewController *controller = [self masterViewController];
     controller.openBisModel = self.rootOpenBisModel;
+
+    // Initialize the connection to openBIS
+    CISDOBAsyncCall *call = [self.serviceManager loginUser: @"admin" password: @"password"];
+    call.success = ^(id result) {
+        [controller didConnectServiceManager: self.serviceManager];
+    };
+    [call start];    
+    
     return YES;
 }
 							
@@ -162,10 +173,26 @@
     
     _rootOpenBisModel = [[CISDOBOpenBisModel alloc] init];
     _rootOpenBisModel.managedObjectContext = self.managedObjectContext;
+    _rootOpenBisModel.serviceManager = self.serviceManager;
     
     return _rootOpenBisModel;
 }
 
+- (CISDOBIpadServiceManager *)serviceManager
+{
+    if (_serviceManager) return _serviceManager;
+    
+    NSURL *storeUrl = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"openBISData.sqlite"];
+    NSURL *openbisUrl = [NSURL URLWithString: @"https://localhost:8443"];
+    
+    NSError *error;
+    _serviceManager =
+        [[CISDOBIpadServiceManager alloc]
+            initWithStoreUrl: storeUrl openbisUrl: openbisUrl trusted: YES error: &error];
+    
+    return _serviceManager;
+}
+
 #pragma mark - Application's Documents directory
 
 // Returns the URL to the application's Documents directory.
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h
index 0a126623f07f5a134136bc80028a5a3e5ab4b1fe..d1f6f47894c685e4228238261999804d2aff9043 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h
+++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h
@@ -23,7 +23,7 @@
 
 #import <UIKit/UIKit.h>
 
-@class CISDOBDetailViewController, CISDOBOpenBisModel;
+@class CISDOBDetailViewController, CISDOBOpenBisModel, CISDOBIpadServiceManager;
 
 #import <CoreData/CoreData.h>
 
@@ -32,4 +32,7 @@
 @property (strong, nonatomic) CISDOBDetailViewController *detailViewController;
 @property (strong, nonatomic) CISDOBOpenBisModel *openBisModel;
 
+// Server Communication
+- (void)didConnectServiceManager:(CISDOBIpadServiceManager *)serviceManager;
+
 @end
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m
index b71f4952a2ef1096423c2a02eb2481eeb877ac01..31881c7a0eea008f06d665f36ccc0511dca93e13 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m
@@ -227,6 +227,14 @@
 }
  */
 
+#pragma mark - Server Communication
+- (void)didConnectServiceManager:(CISDOBIpadServiceManager *)serviceManager
+{
+    [self.openBisModel syncRootEntities: ^(id result) {
+        [self.tableView reloadData];
+    }];
+}
+
 
 #pragma mark - Properties
 
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h
index 7b4e6d5cac288c5fe635c962976c90d2667483e9..60c2341293d06033af9863ff523743a0bc1678c2 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h
+++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h
@@ -23,7 +23,7 @@
 #import <Foundation/Foundation.h>
 #import "CISDOBShared.h"
 
-@class CISDOBIpadEntity;
+@class CISDOBIpadEntity, CISDOBIpadServiceManager;
 
 /**
  * \brief A model for the interaction with openBIS.
@@ -37,6 +37,7 @@
 @property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate;
 
 @property (weak, nonatomic) CISDOBOpenBisModel *parentModel;
+@property (weak, nonatomic) CISDOBIpadServiceManager *serviceManager;
 
 // Initialize
 - (id)initWithParentModel:(CISDOBOpenBisModel *)parentModel; //!< The designated initializer
@@ -60,6 +61,8 @@
 - (BOOL)deleteObjectAtIndexPath:(NSIndexPath *)indexPath error:(NSError **)error; //!< Return YES if operation succeeded
 
 // Server Communication
+- (void)syncRootEntities:(SuccessBlock)success;
+
 //! Get the full selected object from the server and invoke the success block when the data is here
 - (void)syncSelectedObjectForDetailOnSuccess:(SuccessBlock)success;
 
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m
index c5a4d3eb127cf10e26b425c82b4a6600ce2c3a83..c24e77be6832936df32c8f96778ffa86505f7351 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m
@@ -22,6 +22,8 @@
 
 #import "CISDOBOpenBisModel.h"
 #import "CISDOBIpadEntity.h"
+#import "CISDOBIpadServiceManager.h"
+#import "CISDOBAsyncCall.h"
 
 @implementation CISDOBOpenBisModel
 
@@ -42,6 +44,7 @@
     
     if (self.parentModel) {
         self.managedObjectContext = parentModel.managedObjectContext;
+        self.serviceManager = parentModel.serviceManager;
     }
     
     return self;
@@ -120,6 +123,14 @@
 }
 
 #pragma mark - Server Communication
+- (void)syncRootEntities:(SuccessBlock)success;
+{
+    // The manager has connected, initialize the root
+    CISDOBAsyncCall *call = [self.serviceManager retrieveRootLevelEntities];
+    call.success = success;
+    [call start];
+}
+
 - (void)syncSelectedObjectForDetailOnSuccess:(SuccessBlock)success
 {
     // Load the image if necessary