diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java
index 92a925e12c8e37558aac2aa2b81146dd94d3c313..5d7a25b6dca95695c9d20c17a0598027ff7f3be7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java
@@ -45,10 +45,13 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.IMetapr
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BatchRegistrationResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientService;
 
@@ -339,4 +342,17 @@ public class GeneralInformationChangingService extends
         server.registerPerson(sessionToken, userID);
     }
     
+    @Override
+    public void registerSpace(String sessionToken, String spaceCode, String spaceDescription) {
+        server.registerSpace(sessionToken,spaceCode, spaceDescription);
+    }
+    
+    @Override
+    public void registerPersonSpaceRole(String sessionToken, String spaceCode, String userID, String roleCode)
+    {
+        Grantee grantee = Grantee.createPerson(userID);
+        SpaceIdentifier spaceIdentifier = new SpaceIdentifier(spaceCode);
+        server.registerSpaceRole(sessionToken, RoleCode.valueOf(roleCode), spaceIdentifier, grantee);
+    }
+    
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java
index ab10dc8615b4ec3640f73e8aa8e7f2000776a040..1bf5d91e8bd3851b1b3d08734872cd6c331be543 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java
@@ -23,7 +23,6 @@ import ch.systemsx.cisd.authentication.ISessionManager;
 import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext;
 import ch.systemsx.cisd.openbis.generic.shared.AbstractServerLogger;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationChangingService;
-import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Deletion;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DeletionType;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.MetaprojectAssignmentsIds;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.NewVocabularyTerm;
@@ -235,7 +234,19 @@ class GeneralInformationChangingServiceLogger extends AbstractServerLogger imple
     @Override
     public void registerPerson(String sessionToken, String userID)
     {
-        logAccess(sessionToken, "userID", userID);
+        logAccess(sessionToken, "registerPerson", "userID(%s)", userID);
+    }
+
+    @Override
+    public void registerSpace(String sessionToken, String spaceCode, String spaceDescription)
+    {
+        logAccess(sessionToken, "registerSpace", "spaceCode(%s), spaceDescription(%s)", spaceCode, spaceDescription);
+    }
+
+    @Override
+    public void registerPersonSpaceRole(String sessionToken, String spaceCode, String userID, String roleCode)
+    {
+        logAccess(sessionToken, "registerPersonSpaceRole", "spaceCode(%s), userID(%s), roleCode(%s)", spaceCode, userID, roleCode);
     }
     
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
index 2291cfe84064332e06d4ecba11586869d45d4b45..e68f7fffd3929d4a1186a6da564856c8680c00cc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
@@ -1433,6 +1433,37 @@ openbis.prototype.registerPerson = function(userId, action) {
 	});
 }
 
+/**
+ * @see IGeneralInformationChangingService.registerSpace(String, String, String)
+ * @method
+ */
+openbis.prototype.registerSpace = function(spaceCode, spaceDescription, action) {
+	this._internal.ajaxRequest({
+		url: this._internal.generalInfoChangingServiceUrl,
+		data: { "method" : "registerSpace",
+				"params" : [ this.getSession(),
+				             spaceCode,
+				             spaceDescription ] },
+		success: action
+	});
+}
+
+/**
+ * @see IGeneralInformationChangingService.registerPersonSpaceRole(String, String, String, String)
+ * @method
+ */
+openbis.prototype.registerPersonSpaceRole = function(spaceCode, userID, roleCode, action) {
+	this._internal.ajaxRequest({
+		url: this._internal.generalInfoChangingServiceUrl,
+		data: { "method" : "registerPersonSpaceRole",
+				"params" : [ this.getSession(),
+				             spaceCode,
+				             userID,
+				             roleCode ] },
+		success: action
+	});
+}
+
 /**
  * ============================================================================
  * ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.IQueryApiServer methods
diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java
index 9a12ddf73e45e7fcea26e212e393c10ceb5c2e6a..a6ae70dd8429bb4262ecfe08201fba4493512b94 100644
--- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java
+++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java
@@ -270,4 +270,23 @@ public interface IGeneralInformationChangingService extends IRpcService
      */
     public void registerPerson(String sessionToken, String userID);
 
+    /**
+     * Registers a space.
+     * 
+     * @param spaceCode space code
+     * @param spaceDescription space description
+     * @since 1.7
+     */
+    void registerSpace(String sessionToken, String spaceCode, String spaceDescription);
+
+    /**
+     * Registers a space role for a given person.
+     * 
+     * @param spaceCode space code
+     * @param userID user id
+     * @param roleCode openBIS role
+     * @since 1.7
+     */
+    void registerPersonSpaceRole(String sessionToken, String spaceCode, String userID, String roleCode);
+
 }