public void traiteGroupAgentSHD(Integer idAgent, String nameFolderAgent) {

    List<PersonInfo> listPersonSHD = new ArrayList<PersonInfo>();
    List<Integer> listeSuperieurHierarchique = sirhWsConsumer.getListSuperieurOfAgent(idAgent);
    String groupSHD = PREFIXE_GROUP + nameFolderAgent + SHD;
    for (Integer idSup : listeSuperieurHierarchique) {

      if (null != idSup) {
        PersonInfo personSHD = alfrescoUtilsService.getPersonInfoByIdAgent(idSup);

        // AJOUT
        if (null != personSHD) {
          Set<String> listGroup = authorityService.getAuthoritiesForUser(personSHD.getUserName());
          if (!alfrescoUtilsService.isExistGroupForUser(listGroup, groupSHD)
              && authorityService.authorityExists(personSHD.getUserName())) {
            authorityService.addAuthority(groupSHD, personSHD.getUserName());
            if (!listPersonSHD.contains(personSHD)) {
              listPersonSHD.add(personSHD);
            }
            logger.debug("User " + personSHD.getUserName() + " adding in Group " + groupSHD);
          } else if (alfrescoUtilsService.isExistGroupForUser(listGroup, groupSHD)
              && authorityService.authorityExists(personSHD.getUserName())) {
            if (!listPersonSHD.contains(personSHD)) {
              listPersonSHD.add(personSHD);
            }
            logger.debug("User " + personSHD.getUserName() + " existing in Group " + groupSHD);
          }
        }
      }
    }

    // SUPPRESSION
    Set<String> listUsersGoupSHD =
        authorityService.getContainedAuthorities(AuthorityType.USER, groupSHD, true);
    if (null != listUsersGoupSHD) {

      for (String userGroupSHD : listUsersGoupSHD) {
        if (!alfrescoUtilsService.isExistUserInListPersonInfo(listPersonSHD, userGroupSHD)) {
          authorityService.removeAuthority(groupSHD, userGroupSHD);
          logger.debug("User " + userGroupSHD + " deleted in Group " + groupSHD);
        }
      }
    }
  }