@ConditionalOnMissingBean(name = "scimAttributeRepositories")
        @Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        public BeanContainer<PersonAttributeDao> scimAttributeRepositories(
            final ConfigurableApplicationContext applicationContext,
            final CasConfigurationProperties casProperties) {
            return BeanSupplier.of(BeanContainer.class)
                .when(CONDITION.given(applicationContext.getEnvironment()))
                .supply(() -> {
                    val list = new ArrayList<PersonAttributeDao>();
                    val attrs = casProperties.getAuthn().getAttributeRepository();
                    attrs.getScim()
                        .stream()
                        .filter(scim -> StringUtils.isNotBlank(scim.getTarget()))
                        .forEach(scim -> {
                            val dao = new ScimPersonAttributeDao(new ScimPersonAttributeService(scim));
                            FunctionUtils.doIfNotNull(scim.getId(), id -> dao.setId(id));
                            dao.setEnabled(scim.getState() != AttributeRepositoryStates.DISABLED);
                            dao.putTag("state", scim.getState());
                            dao.setOrder(scim.getOrder());
                            LOGGER.debug("Adding SCIM attribute source for [{}]", scim.getTarget());
                            list.add(dao);
                        });
                    return BeanContainer.of(list);
                })
                .otherwise(BeanContainer::empty)
                .get();
        }
This is {@link CasScimPersonDirectoryAutoConfiguration}.

@author Misagh Moayyed
@since 7.2.0
support/cas-server-support-scim/src/main/java/org/apereo/cas/config/CasScimPersonDirectoryAutoConfiguration.java