@Bean
        @ConditionalOnMissingBean(name = "casGroovyAuditTrailExecutionPlanConfigurer")
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        @ConditionalOnMissingGraalVMNativeImage
        public AuditTrailExecutionPlanConfigurer casGroovyAuditTrailExecutionPlanConfigurer(
            final ConfigurableApplicationContext applicationContext,
            final CasConfigurationProperties casProperties) {
            return BeanSupplier.of(AuditTrailExecutionPlanConfigurer.class)
                .when(BeanCondition.on("cas.audit.groovy.template.location")
                    .exists().given(applicationContext.getEnvironment()))
                .supply(() -> plan ->
                    FunctionUtils.doAndHandle(__ -> {
                        val templateFile = casProperties.getAudit().getGroovy().getTemplate().getLocation().getFile();
                        val mgr = new GroovyAuditTrailManager(templateFile, applicationContext);
                        plan.registerAuditTrailManager(mgr);
                    }))
                .otherwiseProxy()
                .get();
        }
This is {@link CasCoreAuditAutoConfiguration}.

@author Misagh Moayyed
@since 5.0.0
core/cas-server-core-audit/src/main/java/org/apereo/cas/config/CasCoreAuditAutoConfiguration.java