<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <beans:beans profile="extension-foia">

        <beans:bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase">
            <beans:property name="dataSource" ref="acmDataSource"/>
            <beans:property name="changeLog"
                            value="classpath:/com/armedia/acm/extension/foia/ddl/acm-extension-foia-database-changelog.xml"/>
            <beans:property name="shouldRun" value="#{dataSourceConfig.autoUpdate}"/>
        </beans:bean>

        <beans:bean id="arkCaseBeanUtils" class="com.armedia.acm.objectonverter.ArkCaseBeanUtils">
            <beans:property name="excludeFields">
                <beans:list value-type="java.lang.String">
                    <beans:value>className</beans:value>
                </beans:list>
            </beans:property>
        </beans:bean>

        <!-- property placeholder for all properties needed for the proxy -->
        <beans:bean id="arkCasePropertyConfigurerFOIA"
                    class="com.armedia.acm.crypto.properties.AcmEncryptablePropertySourcesPlaceholderConfigurer">
            <beans:property name="encryptablePropertyUtils" ref="acmEncryptablePropertyUtils"/>
            <beans:property name="ignoreResourceNotFound" value="true"/>
            <beans:property name="localOverride" value="false"/>
            <beans:property name="order" value="42"/>
            <beans:property name="ignoreUnresolvablePlaceholders" value="true"/>
            <beans:property name="locations">
                <beans:list>
                    <beans:value>file:${user.home}/.arkcase/acm/foiaPortalProvider.properties</beans:value>
                </beans:list>
            </beans:property>
        </beans:bean>

        <beans:bean id="foiaPortalRequestServiceProvider" class="gov.foia.service.FOIAPortalRequestServiceProvider">
            <beans:property name="createRequestService" ref="portalCreateRequestService"/>
            <beans:property name="portalRequestService" ref="portalRequestService"/>
            <beans:property name="portalCreateInquiryService" ref="portalCreateInquiryService"/>
        </beans:bean>

        <beans:bean id="userRegistrationRequestDao" class="gov.foia.dao.UserRegistrationRequestDao"/>

        <beans:bean id="userResetRequestDao" class="gov.foia.dao.UserResetRequestDao"/>

        <beans:bean id="portalFOIAPersonDao" class="gov.foia.dao.PortalFOIAPersonDao"/>

        <beans:bean id="foiaPortalUserServiceProvider" class="gov.foia.service.FOIAPortalUserServiceProvider">
            <beans:property name="emailSenderService" ref="configurableEmailSenderService"/>
            <beans:property name="registrationDao" ref="userRegistrationRequestDao"/>
            <beans:property name="resetDao" ref="userResetRequestDao"/>
            <beans:property name="portalPersonDao" ref="portalFOIAPersonDao"/>
            <beans:property name="portalConfigurationService" ref="portalConfigurationService"/>
            <beans:property name="ldapUserService" ref="ldapUserService"/>
            <beans:property name="personDao" ref="acmPersonDao"/>
            <beans:property name="notificationDao" ref="notificationDao"/>
            <beans:property name="acmContextHolder" ref="acmContextHolder"/>
            <beans:property name="userDao" ref="userJpaDao"/>
            <beans:property name="translationService" ref="translationService"/>
            <beans:property name="acmUserEventPublisher" ref="acmUserEventPublisher"/>
            <beans:property name="organizationDao" ref="acmOrganizationDao"/>
            <beans:property name="requestAssignmentService" ref="requestAssignmentService"/>
            <beans:property name="lookupDao" ref="lookupDao"/>
            <beans:property name="templateManager" ref="correspondenceTemplateManager"/>
        </beans:bean>

        <beans:bean id="portalCreateRequestService" class="gov.foia.service.PortalCreateRequestService">
            <beans:property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
            <beans:property name="userTrackerService" ref="userTrackerService"/>
            <beans:property name="saveFOIARequestService" ref="saveFOIARequestService"/>
            <beans:property name="portalFOIAPersonDao" ref="portalFOIAPersonDao"/>
            <beans:property name="portalRequestService" ref="portalRequestService"/>
            <beans:property name="portalUserServiceProvider" ref="foiaPortalUserServiceProvider"/>
            <property name="personDao" ref="acmPersonDao"/>
        </beans:bean>
        <beans:bean id="portalCreateInquiryService" class="gov.foia.service.PortalCreateInquiryService">
            <property name="taskDao" ref="acmTaskDao"/>
            <property name="personAssociationDao" ref="acmPersonAssociationDao"/>
            <property name="personDao" ref="acmPersonDao"/>
            <property name="caseFileDao" ref="caseFileDao"/>
            <property name="ecmFileService" ref="ecmFileService"/>
            <property name="portalRequestService" ref="portalRequestService"/>
            <property name="taskEventPublisher" ref="taskEventPublisher"/>
            <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        </beans:bean>

        <beans:bean id="portalRequestService" class="gov.foia.service.PortalRequestService">
            <beans:property name="requestDao" ref="foiaRequestDao"/>
            <beans:property name="caseFileDao" ref="caseFileDao"/>
            <beans:property name="executeSolrQuery" ref="executeSolrQuery"/>
            <beans:property name="getCaseByNumberService" ref="getCaseByNumberService"/>
            <beans:property name="userDao" ref="userJpaDao"/>
            <beans:property name="portalFOIAPersonDao" ref="portalFOIAPersonDao"/>
            <beans:property name="personAssociationDao" ref="acmPersonAssociationDao"/>
            <beans:property name="lookupDao" ref="lookupDao"/>
            <beans:property name="notificationService" ref="notificationService"/>
            <beans:property name="groupService" ref="groupService"/>
            <beans:property name="searchResults" ref="searchResults"/>
            <beans:property name="translationService" ref="translationService"/>
            <beans:property name="createAdHocTaskService" ref="createAdHocTaskService"/>
            <beans:property name="holidayConfigurationService" ref="holidayConfigurationService"/>
            <beans:property name="templateManager" ref="correspondenceTemplateManager"/>
        </beans:bean>

        <beans:bean id="dueDateReminder" class="gov.foia.service.DueDateReminder">
            <property name="notificationDao" ref="notificationDao"/>
            <property name="foiaRequestDao" ref="foiaRequestDao"/>
            <property name="holidayConfigurationService" ref="holidayConfigurationService"/>
            <property name="userDao" ref="userJpaDao"/>
            <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
            <property name="translationService" ref="translationService"/>
            <property name="templateManager" ref="correspondenceTemplateManager"/>
        </beans:bean>

        <beans:bean id="dueDateReminderJobDescriptor" class="gov.foia.service.DueDateReminderJobDescriptor">
            <property name="dueDateReminder" ref="dueDateReminder"/>
        </beans:bean>

        <beans:bean id="pdfConverter" class="com.armedia.acm.objectdataprocessing.PluggableDocumentConverter">
            <beans:property name="outputMimeType" value="application/pdf"/>
        </beans:bean>

        <beans:bean id="extendDatesServiceForRequestsInHoldQueue" class="gov.foia.service.ExtendDatesServiceForRequestsInHoldQueue">
            <beans:property name="holidayConfigurationService" ref="holidayConfigurationService"/>
            <beans:property name="requestDao" ref="foiaRequestDao"/>
        </beans:bean>
        <!-- <beans:bean id="folderNamePredicate" class="gov.foia.service.FolderNameEqualsPredicate">
            <beans:property name="folderName" value="01 Request"/>
        </beans:bean>

        <beans:bean id="releaseFolderRule" class="java.io.File">
            <beans:constructor-arg value="${user.home}/.arkcase/acm/foia-javascript-rules/releaseFolderRule.js"/>
        </beans:bean>

        <beans:bean id="folderNamePredicate" class="gov.foia.service.JavaScriptEvaluatingPredicate">
            <beans:property name="javaScript" ref="releaseFolderRule"/>
        </beans:bean> -->

        <beans:bean id="foiaDocumentPrintService" class="gov.foia.service.FoiaDocumentPrintService">
            <beans:property name="acmContainerDao" ref="acmContainerFolderDao"/>
            <beans:property name="folderService" ref="acmFolderService"/>
            <beans:property name="fileService" ref="ecmFileService"/>
            <beans:property name="documentConverter" ref="pdfConverter"/>
            <!-- <beans:property name="predicates">
                <beans:list>
                    <beans:ref bean="folderNamePredicate"/>
                </list>
            </beans:property> -->
        </beans:bean>

        <beans:bean id="foiaNotificationDataUpdateExecutor"
                    class="gov.foia.service.dataupdate.FoiaNotificationDataUpdateExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="foiaRequestStatusChangeExecutor"
                    class="gov.foia.service.dataupdate.FoiaRequestStatusChangeExecutor">
            <beans:property name="requestDao" ref="foiaRequestDao"/>
        </beans:bean>

        <beans:bean id="updateHoldEnterDateForRequestInHoldQueue"
                    class="gov.foia.service.dataupdate.UpdateHoldEnterDateForRequestsInHoldQueueUpdateExecutor">
            <beans:property name="requestDao" ref="foiaRequestDao"/>
        </beans:bean>

        <beans:bean id="solrReindexFOIAFileExecutor" class="gov.foia.service.dataupdate.SolrReindexFoiaFileExecutor">
            <property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="foiaExtensionDataUpdateExecutor"
                    class="gov.foia.service.dataupdate.FoiaExtensionDataUpdateExecutor">
            <beans:property name="foiaDataUpdateExecutors">
                <beans:list>
                    <beans:ref bean="foiaNotificationDataUpdateExecutor"/>
                    <beans:ref bean="solrReindexFOIAFileExecutor"/>
                    <beans:ref bean="foiaRequestStatusChangeExecutor"/>
                    <beans:ref bean="foiaExemptionCodeMigrationExecutor"/>
                    <beans:ref bean="solrReindexFOIAPortalPersonExecutor"/>
                    <beans:ref bean="foiaPortalRegistrationCleanupExecutor"/>
                    <beans:ref bean="solrReindexAcmUserExecutor"/>
                    <beans:ref bean="solrReindexPersonAssociationsExecutor"/>
                    <beans:ref bean="foiaRequestDataUpdateExecutor"/>
                    <beans:ref bean="solrReindexFOIAPersonExecutor"/>
                    <beans:ref bean="multiplePortalUsersWithSameEmailCleanupExecutor"/>
                    <beans:ref bean="createPersonFromExistingUsersExecutor"/>
                    <beans:ref bean="updateHoldEnterDateForRequestInHoldQueue"/>
                    <beans:ref bean="createFOIAAlfrescoAndRmFoldersExecutor"/>
                    <beans:ref bean="createAnonymousPersonExecutor"/>
                </beans:list>
            </beans:property>

        </beans:bean>

        <beans:bean id="foiaExemptionCodeMigrationExecutor"
                    class="gov.foia.service.dataupdate.FOIAExemptionCodeMigrationExecutor">
            <beans:property name="foiaExemptionService" ref="foiaExemptionService"/>
        </beans:bean>

        <beans:bean id="solrReindexFOIAPortalPersonExecutor"
                    class="gov.foia.service.dataupdate.SolrReindexFOIAPortalPersonExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="foiaPortalRegistrationCleanupExecutor"
                    class="gov.foia.service.dataupdate.FoiaPortalRegistrationCleanupExecutor">
            <beans:property name="acmContextHolder" ref="acmContextHolder"/>
            <beans:property name="userDao" ref="userJpaDao"/>
            <beans:property name="registrationDao" ref="userRegistrationRequestDao"/>
            <beans:property name="portalConfigurationService" ref="portalConfigurationService"/>
        </beans:bean>

        <beans:bean id="solrReindexAcmUserExecutor" class="gov.foia.service.dataupdate.SolrReindexAcmUserExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="solrReindexPersonAssociationsExecutor"
                    class="gov.foia.service.dataupdate.SolrReindexPersonAssociationsExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="foiaRequestDataUpdateExecutor"
                    class="gov.foia.service.dataupdate.FoiaRequestDataUpdateExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="solrReindexFOIAPersonExecutor" class="gov.foia.service.dataupdate.SolrReindexFOIAPersonExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
        </beans:bean>

        <beans:bean id="multiplePortalUsersWithSameEmailCleanupExecutor"
                    class="gov.foia.service.dataupdate.MultiplePortalUsersWithSameEmailCleanupExecutor">
            <beans:property name="acmContextHolder" ref="acmContextHolder"/>
            <beans:property name="userDao" ref="userJpaDao"/>
            <beans:property name="springLdapUserDao" ref="springLdapUserDao"/>
        </beans:bean>

        <beans:bean id="queuesTimeToCompleteService" class="gov.foia.service.QueuesTimeToCompleteService">
            <beans:property name="queueConfigFile" value="file:${user.home}/.arkcase/acm/queuesConfiguration.json"/>
            <beans:property name="objectConverter" ref="objectConverter"/>
            <beans:property name="holidayConfigurationService" ref="holidayConfigurationService"/>
        </beans:bean>

        <beans:bean id="foiaConfigurationService" class="gov.foia.service.FoiaConfigurationService">
            <beans:property name="configurationPropertyService" ref="configurationPropertyService"/>
            <beans:property name="foiaConfig" ref="foiaConfig"/>
        </beans:bean>

        <beans:bean id="ecmFileNewMetadataHandler" class="gov.foia.pipeline.presave.FOIAEcmFileNewMetadataHandler">
            <beans:property name="ecmFileDao" ref="ecmFileDao"/>
            <beans:property name="folderDao" ref="acmFolderDao"/>
            <beans:property name="pageCountService" ref="pageCountService"/>
            <beans:property name="arkCaseBeanUtils" ref="arkCaseBeanUtils"/>
        </beans:bean>

        <beans:bean id="ecmFileUpdateMetadataHandler"
                    class="gov.foia.pipeline.presave.FOIAEcmFileUpdateMetadataHandler">
            <beans:property name="ecmFileDao" ref="ecmFileDao"/>
            <beans:property name="folderDao" ref="acmFolderDao"/>
            <beans:property name="pageCountService" ref="pageCountService"/>
        </beans:bean>

        <beans:bean id="ecmFileMergedMetadataHandler"
                    class="gov.foia.pipeline.presave.FOIAEcmFileMergedMetadataHandler">
            <beans:property name="ecmFileDao" ref="ecmFileDao"/>
            <beans:property name="folderDao" ref="acmFolderDao"/>
            <beans:property name="pageCountService" ref="pageCountService"/>
        </beans:bean>

        <beans:bean id="foiaFileUpdatedEventListener" class="gov.foia.listener.FOIAFileUpdatedEventListener">
            <beans:property name="foiaRequestFileBrokerClient" ref="foiaRequestFileBrokerClient"/>
            <beans:property name="ecmFileService" ref="ecmFileService"/>
            <beans:property name="acmParticipantService" ref="acmParticipantService"/>
            <beans:property name="caseFileDao" ref="caseFileDao"/>
            <beans:property name="portalAdminService" ref="portalAdminService"/>
            <beans:property name="portalConfigurationService" ref="portalConfigurationService"/>
            <beans:property name="fileEventPublisher" ref="fileEventPublisher"/>
        </beans:bean>

        <beans:bean id="foiaQueuedEventListener" class="gov.foia.listener.FOIAQueuedEventListener">
            <beans:property name="requestDao" ref="foiaRequestDao"/>
        </beans:bean>

        <beans:bean id="newRequestDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="New Request"/>
            <beans:property name="reqAck" value="REQ"/>
            <beans:property name="doctype" value="Request Form"/>
            <beans:property name="filenameFormat" value="RequestForm-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Request Form"/>
        </beans:bean>

        <beans:bean id="newRequestAcknowledgementDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="New Request"/>
            <beans:property name="reqAck" value="ACK"/>
            <beans:property name="doctype" value="Request Acknowledgement Letter"/>
            <beans:property name="filenameFormat" value="RequestAcknowledgementLetter-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Request Acknowledgement Letter"/>
        </beans:bean>

        <beans:bean id="requestReceivedAcknowledgementDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="New Request"/>
            <beans:property name="reqAck" value="RECEIVE_ACK"/>
            <beans:property name="doctype" value="Request Received Acknowledgement Letter"/>
            <beans:property name="filenameFormat" value="RequestReceivedAcknowledgementLetter-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Request Received Acknowledgement Letter"/>
        </beans:bean>

        <beans:bean id="appealReceivedAcknowledgementDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="Appeal"/>
            <beans:property name="reqAck" value="RECEIVE_ACK"/>
            <beans:property name="doctype" value="Appeal Received Acknowledgement Letter"/>
            <beans:property name="filenameFormat" value="AppealReceivedAcknowledgementLetter-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Appeal Received Acknowledgement Letter"/>
        </beans:bean>

        <beans:bean id="appealDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="Appeal"/>
            <beans:property name="reqAck" value="REQ"/>
            <beans:property name="doctype" value="Appeal Form"/>
            <beans:property name="filenameFormat" value="AppealForm-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Appeal Form"/>
        </beans:bean>

        <beans:bean id="appealAcknowledgementDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="Appeal"/>
            <beans:property name="reqAck" value="ACK"/>
            <beans:property name="doctype" value="Appeal Acknowledgement Letter"/>
            <beans:property name="filenameFormat" value="AppealAcknowledgementLetter-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Appeal Acknowledgement Letter"/>
        </beans:bean>

        <beans:bean id="appealExtensionDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="Appeal"/>
            <beans:property name="reqAck" value="REQ_EXTENSION"/>
            <beans:property name="doctype" value="Request Extension Letter"/>
            <beans:property name="filenameFormat" value="ExtensionLetter-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Request Extension Letter"/>
        </beans:bean>

        <beans:bean id="requestDenialLetterDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="New Request"/>
            <beans:property name="reqAck" value="DENIAL"/>
            <beans:property name="doctype" value="Denial Letter"/>
            <beans:property name="filenameFormat" value="DenialLetter.docx-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Denial Letter"/>
        </beans:bean>

        <beans:bean id="requestExtensionDocumentDescriptor" class="gov.foia.model.FOIADocumentDescriptor">
            <beans:property name="type" value="New Request"/>
            <beans:property name="reqAck" value="REQ_EXTENSION"/>
            <beans:property name="doctype" value="Request Extension Letter"/>
            <beans:property name="filenameFormat" value="ExtensionLetter-%s.docx"/>
            <beans:property name="targetFileExtension" value="docx"/>
            <beans:property name="template" value="Request Extension Letter"/>
        </beans:bean>

        <beans:bean id="publicFlagService" class="gov.foia.service.PublicFlagService">
            <beans:property name="ecmFileService" ref="ecmFileService"/>
            <beans:property name="foiaFileDao" ref="foiaFileDao"/>
            <beans:property name="acmFolderService" ref="acmFolderService"/>
        </beans:bean>

        <beans:bean id="notificationGroupEmailSenderService"
                    class="gov.foia.service.NotificationGroupEmailSenderService">
            <beans:property name="caseFileDao" ref="caseFileDao"/>
            <beans:property name="ecmFileDao" ref="ecmFileDao"/>
            <beans:property name="lookupDao" ref="lookupDao"/>
            <beans:property name="notificationDao" ref="notificationDao"/>
            <beans:property name="templateManager" ref="correspondenceTemplateManager"/>
        </beans:bean>

        <beans:bean id="firstAssigneeOwningGroupNotify" class="gov.foia.service.FirstAssigneeOwningGroupNotify">
            <beans:property name="notificationUtils" ref="notificationUtils"/>
            <beans:property name="userInfoHelper" ref="userInfoHelper"/>
            <beans:property name="notificationService" ref="notificationService"/>
            <beans:property name="templateManager" ref="correspondenceTemplateManager"/>
        </beans:bean>

        <beans:bean id="foiaExecutiveGroupNotificationService"
                    class="gov.foia.service.FOIAExecutiveGroupNotificationService">
            <beans:property name="caseFileDao" ref="caseFileDao"/>
            <beans:property name="notificationGroupEmailSenderService" ref="notificationGroupEmailSenderService"/>
            <beans:property name="userDao" ref="userJpaDao"/>
            <beans:property name="foiaConfigurationService" ref="foiaConfigurationService"/>
        </beans:bean>

        <beans:bean id="ecmFileService" class="gov.foia.service.FOIAEcmFileServiceImpl">
            <beans:property name="ecmFileTransaction" ref="ecmFileTransaction"/>
            <beans:property name="ecmFileDao" ref="ecmFileDao"/>
            <beans:property name="foiaFileDao" ref="foiaFileDao"/>
            <beans:property name="containerFolderDao" ref="acmContainerFolderDao"/>
            <beans:property name="ecmFileConfig" ref="ecmFileConfig"/>
            <beans:property name="solrQuery" ref="executeSolrQuery"/>
            <beans:property name="searchResults" ref="searchResults"/>
            <beans:property name="sortParameterNameToCmisFieldName">
                <map>
                    <entry key="name" value="name_lcs"/>
                    <entry key="type" value="type_lcs"/>
                    <entry key="created" value="create_date_tdt"/>
                    <entry key="author" value="author"/>
                    <entry key="version" value="version_s"/>
                    <entry key="modified" value="modified_date_tdt"/>
                    <entry key="creator" value="creator_lcs"/>
                    <entry key="modifier" value="modifier_lcs"/>
                    <entry key="category" value="category_s"/>
                    <entry key="redactionStatus" value="redaction_status_s"/>
                    <entry key="reviewStatus" value="review_status_s"/>
                    <entry key="status" value="status_lcs"/>
                    <entry key="public" value="public_flag_b"/>
                </map>
            </beans:property>
            <beans:property name="solrObjectTypeToAcmType">
                <map>
                    <entry key="FILE" value="file"/>
                    <entry key="FOLDER" value="folder"/>
                </map>
            </beans:property>
            <beans:property name="categoryMap">
                <map>
                    <entry key="document" value="Document"/>
                    <entry key="correspondence" value="Correspondence"/>
                </map>
            </beans:property>
            <beans:property name="folderDao" ref="acmFolderDao"/>
            <beans:property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
            <beans:property name="cmisConfigUtils" ref="cmisConfigUtils"/>
            <beans:property name="fileParticipantService" ref="fileParticipantService"/>
            <beans:property name="recycleBinItemService" ref="recycleBinItemServiceImpl"/>
            <beans:property name="camelContextManager" ref="camelContextManager"/>
            <beans:property name="fileEventPublisher" ref="fileEventPublisher"/>
            <beans:property name="emailAttachmentExtractorComponent" ref="emailAttachmentExtractorComponent"/>
            <beans:property name="acmFolderService" ref="acmFolderService"/>
        </beans:bean>

        <beans:bean id="foiaConfig" class="gov.foia.model.FoiaConfig" scope="refresh">
            <aop:scoped-proxy/>
        </beans:bean>

        <beans:bean id="foiaRequestBrokerConfig" class="gov.foia.model.FoiaRequestBrokerConfig" scope="refresh">
            <aop:scoped-proxy/>
        </beans:bean>

        <beans:bean id="ecmFileCopiedExemptionCodeListener"
                    class="gov.foia.listener.EcmFileCopiedExemptionCodeListener">
            <beans:property name="foiaExemptionService" ref="foiaExemptionService"/>
        </beans:bean>

        <beans:bean id="assignmentNotifier" class="gov.foia.listener.FoiaAssignmentNotifier">
            <beans:property name="notificationService" ref="notificationService"/>
            <beans:property name="templateManager" ref="correspondenceTemplateManager"/>
        </beans:bean>

        <beans:bean id="niemExportService" class="gov.foia.service.NiemExportServiceImpl">
            <beans:property name="lookupDao" ref="lookupDao"/>
            <beans:property name="reportsConfig" ref="pentahoReportsConfig"/>
            <beans:property name="reportService" ref="reportService"/>
            <beans:property name="foiaConfig" ref="foiaConfig"/>
        </beans:bean>

        <beans:bean id="foiaZylabMatterService" class="gov.foia.service.FOIAZylabMatterService">
            <beans:property name="foiaRequestDao" ref="foiaRequestDao"/>
            <beans:property name="zylabIntegrationConfig" ref="zylabIntegrationConfig"/>
            <beans:property name="zylabIntegrationService" ref="zylabIntegrationService"/>
            <beans:property name="zylabEventPublisher" ref="zylabEventPublisher"/>
        </beans:bean>

        <beans:bean id="zylabProductionFileIncomingListener"
                    class="gov.foia.listener.ZylabProductionFileIncomingListener">
            <beans:property name="acmFolderService" ref="acmFolderService"/>
            <beans:property name="ecmFileService" ref="ecmFileService"/>
            <beans:property name="foiaRequestDao" ref="foiaRequestDao"/>
            <beans:property name="zylabIntegrationConfig" ref="zylabIntegrationConfig"/>
            <beans:property name="zylabIntegrationService" ref="zylabIntegrationService"/>
            <beans:property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
            <beans:property name="workingFolderName" value="02 Working"/>
            <beans:property name="documentExemptionService" ref="documentExemptionService"/>
            <beans:property name="lookupDao" ref="lookupDao"/>
            <beans:property name="zylabEventPublisher" ref="zylabEventPublisher"/>
        </beans:bean>

        <beans:bean id="createPersonFromExistingUsersExecutor"
              class="gov.foia.service.dataupdate.CreateFOIAPersonFromExistingUsersExecutor">
            <beans:property name="solrReindexService" ref="solrReindexService"/>
            <beans:property name="userDao" ref="userJpaDao"/>
            <beans:property name="personDao" ref="acmPersonDao"/>
            <beans:property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        </beans:bean>

        <beans:bean id="createFOIAAlfrescoAndRmFoldersExecutor" class="gov.foia.service.dataupdate.CreateFOIAAlfrescoAndRmFoldersExecutor">
            <beans:property name="ecmFileService" ref="ecmFileService"/>
            <beans:property name="ecmFileConfig" ref="ecmFileConfig"/>
            <beans:property name="alfrescoRecordsService" ref="alfrescoRecordsService"/>
        </beans:bean>

        <bean id="createAnonymousPersonExecutor" class="gov.foia.service.dataupdate.CreateAnonymousPersonExecutor">
            <property name="personDao" ref="acmPersonDao"/>
        </bean>

    </beans:beans>
</beans:beans>
