@ConditionalOnMissingBean(name = "grouperAttributeRepositories")
        @Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        public BeanContainer<PersonAttributeDao> grouperAttributeRepositories(
            final CasConfigurationProperties casProperties) {
            val list = new ArrayList<PersonAttributeDao>();
            val gp = casProperties.getAuthn().getAttributeRepository().getGrouper();
            val dao = new GrouperPersonAttributeDao();
            dao.setOrder(gp.getOrder());
            dao.setParameters(gp.getParameters());
            dao.setSubjectType(GrouperPersonAttributeDao.GrouperSubjectType.valueOf(gp.getSubjectType()));
            dao.setUsernameAttributeProvider(new SimpleUsernameAttributeProvider(gp.getUsernameAttribute()));
            dao.setEnabled(gp.getState() != AttributeRepositoryStates.DISABLED);
            dao.putTag("state", gp.getState());
            FunctionUtils.doIfNotNull(gp.getId(), id -> dao.setId(id));
            LOGGER.debug("Configured Grouper attribute source");
            list.add(dao);
            return BeanContainer.of(list);
        }
This is {@link CasPersonDirectoryGrouperConfiguration}.

@author Misagh Moayyed
@since 6.4.0
support/cas-server-support-grouper/src/main/java/org/apereo/cas/config/CasPersonDirectoryGrouperConfiguration.java