private static Collection<CacheConfiguration> buildIgniteTicketCaches(final IgniteProperties ignite, final TicketCatalog ticketCatalog) {
        val definitions = ticketCatalog.findAll();
        return definitions
            .stream()
            .map(t -> {
                val ticketsCache = new CacheConfiguration();
                ticketsCache.setName(t.getProperties().getStorageName());
                ticketsCache.setCacheMode(CacheMode.valueOf(ignite.getTicketsCache().getCacheMode()));
                ticketsCache.setAtomicityMode(CacheAtomicityMode.valueOf(ignite.getTicketsCache().getAtomicityMode()));
                val writeSync = CacheWriteSynchronizationMode.valueOf(ignite.getTicketsCache().getWriteSynchronizationMode());
                ticketsCache.setWriteSynchronizationMode(writeSync);
                val duration = new Duration(TimeUnit.SECONDS, t.getProperties().getStorageTimeout());
                ticketsCache.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(duration));
                ticketsCache.setIndexedTypes(String.class, IgniteTicketDocument.class);
                
                val queryEntity = new QueryEntity(String.class, IgniteTicketDocument.class)
                    .setTableName(t.getProperties().getStorageName())
                    .setKeyFields(Set.of("id", "type", "principal", "prefix", "attributes"))
                    .addQueryField("id", String.class.getName(), null)
                    .addQueryField("type", String.class.getName(), null)
                    .addQueryField("principal", String.class.getName(), null)
                    .addQueryField("attributes", Map.class.getName(), null)
                    .addQueryField("prefix", String.class.getName(), null);
                queryEntity.setIndexes(List.of(new QueryIndex("id"), new QueryIndex("type", false),
                    new QueryIndex("principal", false), new QueryIndex("prefix", false),
                    new QueryIndex("attributes", false)));
                ticketsCache.setQueryEntities(List.of(queryEntity));

                return ticketsCache;
            })
            .collect(Collectors.toSet());
    }
This is {@link CasIgniteTicketRegistryAutoConfiguration}.

@author Misagh Moayyed
@since 5.0.0
support/cas-server-support-ignite-ticket-registry/src/main/java/org/apereo/cas/config/CasIgniteTicketRegistryAutoConfiguration.java