Index: modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java
===================================================================
--- modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java	(revision 62019)
+++ modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java	(revision 62020)
@@ -3,6 +3,7 @@
 import eu.dnetlib.domain.data.Repository;
 import eu.dnetlib.domain.data.RepositoryInterface;
 import eu.dnetlib.repo.manager.domain.*;
+import eu.dnetlib.repo.manager.domain.dto.RepositoryTerms;
 import eu.dnetlib.repo.manager.domain.dto.User;
 import eu.dnetlib.repo.manager.exception.ResourceNotFoundException;
 import eu.dnetlib.repo.manager.service.RepositoryService;
@@ -24,6 +25,7 @@
 
 import javax.ws.rs.core.Response;
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -64,9 +66,26 @@
     @ResponseBody
     @PreAuthorize("hasAuthority('REGISTERED_USER')")
     public List<RepositorySnippet> getRepositoriesSnippetsOfUser() throws Exception {
-        return repositoryService.getRepositoriesSnippetsOfUser("0", "100");
+        return repositoryService.getRepositoriesSnippetsOfUser("0", "100"); // FIXME
     }
 
+    @RequestMapping(value = "/terms", method = RequestMethod.POST,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    @PreAuthorize("hasAuthority('REGISTERED_USER')")
+    public void updateRepositoriesTerms(@RequestBody List<RepositoryTerms> repositoriesTerms) throws Exception {
+        Date date = new Date();
+        if (repositoriesTerms != null) {
+        for (RepositoryTerms terms : repositoriesTerms) {
+                Repository repository = repositoryService.getRepositoryById(terms.getId());
+                repository.setConsentTermsOfUse(terms.getConsentTermsOfUse());
+                repository.setFullTextDownload(terms.getFullTextDownload());
+                repository.setConsentTermsOfUseDate(date);
+                repositoryService.updateRepository(repository, SecurityContextHolder.getContext().getAuthentication());
+            }
+        }
+    }
+
     @RequestMapping(value = "/searchRegisteredRepositories/{page}/{size}", method = RequestMethod.GET,
             produces = MediaType.APPLICATION_JSON_VALUE)
     @ResponseBody
Index: modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/domain/dto/RepositoryTerms.java
===================================================================
--- modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/domain/dto/RepositoryTerms.java	(nonexistent)
+++ modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/domain/dto/RepositoryTerms.java	(revision 62020)
@@ -0,0 +1,55 @@
+package eu.dnetlib.repo.manager.domain.dto;
+
+import java.util.Date;
+
+public class RepositoryTerms {
+
+    private String id;
+    private String name;
+    private Boolean consentTermsOfUse;
+    private Boolean fullTextDownload;
+    private Date consentTermsOfUseDate;
+
+    public RepositoryTerms() {
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getConsentTermsOfUse() {
+        return consentTermsOfUse;
+    }
+
+    public void setConsentTermsOfUse(Boolean consentTermsOfUse) {
+        this.consentTermsOfUse = consentTermsOfUse;
+    }
+
+    public Boolean getFullTextDownload() {
+        return fullTextDownload;
+    }
+
+    public void setFullTextDownload(Boolean fullTextDownload) {
+        this.fullTextDownload = fullTextDownload;
+    }
+
+    public Date getConsentTermsOfUseDate() {
+        return consentTermsOfUseDate;
+    }
+
+    public void setConsentTermsOfUseDate(Date consentTermsOfUseDate) {
+        this.consentTermsOfUseDate = consentTermsOfUseDate;
+    }
+}
Index: modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java
===================================================================
--- modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java	(revision 62019)
+++ modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java	(revision 62020)
@@ -981,7 +981,7 @@
     private UriComponents searchDatasource(String page, String size) {
 
         return UriComponentsBuilder
-                .fromHttpUrl(baseAddress + "/ds/search/")
+                .fromHttpUrl(baseAddress + "/ds/searchdetails/")
                 .path("/{page}/{size}/")
                 .queryParam("requestSortBy", "officialname")
                 .queryParam("order", "ASCENDING")
Index: modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/security/AuthoritiesUpdater.java
===================================================================
--- modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/security/AuthoritiesUpdater.java	(revision 62019)
+++ modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/security/AuthoritiesUpdater.java	(revision 62020)
@@ -10,7 +10,6 @@
 import org.springframework.security.oauth2.common.exceptions.UnauthorizedClientException;
 import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
 import org.springframework.session.Session;
-//import org.springframework.session.ExpiringSession;
 import org.springframework.session.FindByIndexNameSessionRepository;
 import org.springframework.stereotype.Service;
 
@@ -27,10 +26,10 @@
     @Autowired
     FindByIndexNameSessionRepository sessions;
 
-    public void update(String email, Collection<? extends GrantedAuthority> authorities) {
+    public void update(String id, Update update) {
         if (sessions != null) {
             Map<String, Session> map = sessions.
-                    findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, email);
+                    findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, id);
             if (map != null) {
                 logger.debug(map.values().toArray().length);
                 for (Session session : map.values()) {
@@ -40,9 +39,9 @@
                         Authentication authentication = securityContext.getAuthentication();
                         if (authentication instanceof OIDCAuthenticationToken) {
                             OIDCAuthenticationToken authOIDC = (OIDCAuthenticationToken) authentication;
-                            logger.debug(authorities);
+                            logger.debug(update.authorities(authOIDC.getAuthorities()));
                             securityContext.setAuthentication(new OIDCAuthenticationToken(authOIDC.getSub(), authOIDC.getIssuer(),
-                                    authOIDC.getUserInfo(), authorities, authOIDC.getIdToken(),
+                                    authOIDC.getUserInfo(), update.authorities(authOIDC.getAuthorities()), authOIDC.getIdToken(),
                                     authOIDC.getAccessTokenValue(), authOIDC.getRefreshTokenValue()));
                             logger.debug("Update authorities");
                             session.setAttribute(SPRING_SECURITY_CONTEXT_KEY, securityContext);
@@ -54,13 +53,8 @@
         }
     }
 
-    public void update(String email, Update update) {
-        Collection<? extends GrantedAuthority> authorities = update.authorities(SecurityContextHolder.getContext().getAuthentication().getAuthorities());
-        this.update(email, authorities);
-    }
-
-    public void addRole(String email, GrantedAuthority role) {
-        this.update(email, old -> {
+    public void addRole(String id, GrantedAuthority role) {
+        this.update(id, old -> {
             HashSet<GrantedAuthority> authorities = new HashSet<>(old);
             authorities.add(role);
             return authorities;
@@ -77,8 +71,8 @@
         }
     }
 
-    public void removeRole(String email, GrantedAuthority role) {
-        this.update(email, old -> {
+    public void removeRole(String id, GrantedAuthority role) {
+        this.update(id, old -> {
             HashSet<GrantedAuthority> authorities = new HashSet<>(old);
             authorities.remove(role);
             return authorities;
Index: modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/security/AuthorizationServiceImpl.java
===================================================================
--- modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/security/AuthorizationServiceImpl.java	(revision 62019)
+++ modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/service/security/AuthorizationServiceImpl.java	(revision 62020)
@@ -5,19 +5,26 @@
 import eu.dnetlib.repo.manager.domain.dto.User;
 import eu.dnetlib.repo.manager.exception.ResourceNotFoundException;
 import eu.dnetlib.repo.manager.service.aai.registry.AaiRegistryService;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
 import org.mitre.openid.connect.model.OIDCAuthenticationToken;
 import org.mitre.openid.connect.model.UserInfo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service("authorizationService")
 public class AuthorizationServiceImpl implements AuthorizationService {
 
+    private static final Logger logger = LogManager.getLogger(AuthorizationServiceImpl.class);
+
     public static final String SUPER_ADMINISTRATOR = "SUPER_ADMINISTRATOR";
     public static final String CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR = "CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR";
     public static final String REGISTERED_USER = "REGISTERED_USER";
@@ -131,17 +138,11 @@
 
     @Override
     public Collection<String> getUserRoles() {
-        List<String> roles;
-        JsonArray entitlements;
+        Collection<String> roles;
         UserInfo userInfo = ((OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication()).getUserInfo();
-        if (userInfo.getSource().getAsJsonArray("edu_person_entitlements") != null) {
-            entitlements = userInfo.getSource().getAsJsonArray("edu_person_entitlements");
-        } else if (userInfo.getSource().getAsJsonArray("eduperson_entitlement") != null) {
-            entitlements = userInfo.getSource().getAsJsonArray("eduperson_entitlement");
-        } else {
-            entitlements = new JsonArray();
-        }
-        roles = AuthoritiesMapper.entitlementRoles(entitlements);
+        roles = getUserRoles(userInfo.getEmail());
+
+        logger.debug(String.format("User Roles: %s", String.join(",", roles)));
         return roles;
     }
 
Index: modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java
===================================================================
--- modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java	(revision 62019)
+++ modules/uoa-repository-manager-service/trunk/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java	(revision 62020)
@@ -31,7 +31,8 @@
 
         Repository repository = new Repository();
 
-        JSONObject datasource = repositoryObject.getJSONObject("datasource");
+//        JSONObject datasource = repositoryObject.getJSONObject("datasource");
+        JSONObject datasource = repositoryObject;
 
         //if( datasource.equals(null))
         //    return null;
@@ -103,11 +104,23 @@
             repository.setCountryCode(countryCode);
         }
 
+        repository.setConsentTermsOfUse(convertStringToBoolean(datasource.get("consentTermsOfUse").toString()));
+        try {
+            repository.setConsentTermsOfUseDate(convertStringToDate(datasource.get("consentTermsOfUseDate").toString()));
+        } catch (JSONException e) {
+            repository.setConsentTermsOfUseDate(null);
+        }
+        repository.setFullTextDownload(convertStringToBoolean(datasource.get("fullTextDownload").toString()));
+
         /* identities field  */
 
         return repository;
     }
 
+    public static Boolean convertStringToBoolean(String value) {
+        return value.equals("null") ? null : Boolean.valueOf(value);
+    }
+
     public static Date convertStringToDate(String date) {
 
         if (Objects.equals(date, "null"))
@@ -169,6 +182,11 @@
         repositorySnippet.setRegisteredby(repositorySnippetObject.get("registeredby").toString());
         if (repositorySnippet.getRegisteredby().equals("null"))
             repositorySnippet.setRegisteredby("");
+
+        repositorySnippet.setConsentTermsOfUse(repositorySnippetObject.get("consenttermsofuse").toString());
+        repositorySnippet.setFullTextDownload(repositorySnippetObject.get("fulltextdownload").toString());
+        repositorySnippet.setConsentTermsOfUseDate(convertStringToDate(repositorySnippetObject.get("consenttermsofusedate").toString()));
+
         return repositorySnippet;
 
     }
@@ -296,6 +314,9 @@
         }
 
         repositoryMap.put("subjects", "");
+        repositoryMap.put("consentTermsOfUse", repository.getConsentTermsOfUse());
+        repositoryMap.put("fullTextDownload", repository.getFullTextDownload());
+        repositoryMap.put("consentTermsOfUseDate", convertDateToString(repository.getConsentTermsOfUseDate()));
 
         return mapper.writeValueAsString(repositoryMap);
     }
