<!--
Configuration objects are loaded according to the order in which they are specified in
this file, with the caveat that dependencies listed in the optional "depends" attribute
will be loaded before the config object that specifies them.

For individual configuration-object elements:
 * Put resource patterns after resources.
 * Order is indeterminate for files looked up by pattern.
 * Resources loaded by patterns will be loaded after resources by file name.
 * Resources loaded by file name will be loaded in the order they appear in this file.
 * The lazy attribute is only used by command line tools (initialization of config objects with
lazy="true" is deferred).
-->

<configuration-objects>

  <configuration-object name="business-data-source-validator" type="com.appiancorp.rdbms.datasource.BusinessDataSourceValidator" background="true"/>
  <configuration-object name="design-object-lock" type="com.appiancorp.object.locking.DesignObjectLockServletContextListener" background="true"/>
  <configuration-object name="file-cleaning-tracker" type="com.appiancorp.common.appianwebmvc.FileCleaningTrackerConfig" background="true"/>
  <configuration-object name="system-groups-config" type="com.appiancorp.common.initialize.InitializeSystemGroups" background="true"/>
  <configuration-object name="initialize-clojure" type="com.appiancorp.common.initialize.InitializeClojure" background="true"/>
  <configuration-object name="initialize-teneo-package-loader" type="com.appiancorp.common.initialize.InitializeTeneoPackageLoader" background="true"/>
  <configuration-object name="transient-files-cleanup" type="com.appiancorp.content.TransientFilesCleanup" background="true"/>
  <configuration-object name="put-type-info-on-session" type="com.appiancorp.process.admin.PopulateTypesForWeb" background="true"/>
  <configuration-object name="proxyInit" type="com.appiancorp.ap2.ProxyInit" background="true"/>

  <!-- begin MigrationFlag -->
  <configuration-object name="migrate-sail-components" type="com.appiancorp.common.initialize.MigrateSailComponents" />
  <!-- end MigrationFlag -->

  <configuration-object name="bundles" type="com.appiancorp.common.appianwebmvc.BundleConfig" background="true">
    <resource>/WEB-INF/conf/framework/bundles.xml</resource>
    <pattern>/WEB-INF/conf/**/appianwebmvc-bundles-*.xml</pattern>
  </configuration-object>
  <configuration-object name="grid" type="com.appiancorp.asi.components.grid.internal.GridConfig" background="true">
    <pattern>/WEB-INF/conf/**/grid-config-*.xml</pattern>
  </configuration-object>
  <configuration-object name="hierarchy" type="com.appiancorp.asi.components.hierarchy.internal.HierarchyConfig" background="true">
    <pattern>/WEB-INF/conf/**/hierarchy-config-*.xml</pattern>
  </configuration-object>
  <configuration-object name="appian-web-mvc" type="com.appiancorp.common.appianwebmvc.AppianWebMvcConfig" background="true"> <!-- must be done BEFORE AppianActionServlet -->
    <pattern>/WEB-INF/conf/**/appian-config-*.xml</pattern>
  </configuration-object>
  <configuration-object name="appian-web-mvc-layouts" type="com.appiancorp.common.appianwebmvc.TilesConfig" depends="appian-web-mvc" background="true"> <!-- must be done BEFORE AppianActionServlet -->
    <resource>/WEB-INF/conf/portal/tiles-portal-base.xml</resource>
    <pattern>/WEB-INF/conf/**/portal-tiles-*.xml</pattern>
  </configuration-object>
  <configuration-object name="display_tokens" type="com.appiancorp.asi.components.display.DisplayConfig" background="true">
    <pattern>/WEB-INF/conf/**/token-display-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="picker-config-3" type="com.appiancorp.asi.components.picker3.PickerConfig" depends="hierarchy,grid,display_tokens" background="true">
    <resource>/WEB-INF/conf/components/picker3/picker.xml</resource>
    <pattern>/WEB-INF/conf/**/picker-*.xml</pattern>
  </configuration-object>


  <!-- begin activity classes -->
  <configuration-object name="activity-classes" type="com.appiancorp.process.admin.LoadSmartNodeACSchemas">
    <resource>/WEB-INF/conf/process/appian-internal-activities.xml</resource>
    <resource>/WEB-INF/conf/process/appian-internal2-activities.xml</resource>
    <resource>/WEB-INF/conf/process/appian-internal3-activities.xml</resource>
    <resource>/WEB-INF/conf/process/appian-connector-activities.xml</resource>
    <resource>/WEB-INF/conf/process/appian-custom-activities.xml</resource>
    <resource>/WEB-INF/conf/process/appian-integration-activities.xml</resource>
    <pattern>/WEB-INF/conf/**/custom-*-activities.xml</pattern>
    <pattern>/WEB-INF/conf/**/custom-activities-*.xml</pattern>
  </configuration-object>
  <configuration-object name="system-activity-classes" type="com.appiancorp.process.admin.LoadSystemACSchemas" depends="activity-classes">
    <resource>/WEB-INF/conf/process/appian-core-activities.xml</resource>
  </configuration-object>
  <configuration-object name="assignment-activity-classes" type="com.appiancorp.process.admin.LoadAssignmentACSchemas" depends="system-activity-classes">
    <resource>/WEB-INF/conf/process/appian-assignment-functions.xml</resource>
  </configuration-object>
  <configuration-object name="assignee-pool-activity-classes" type="com.appiancorp.process.admin.LoadAssigneePoolACSchemas" depends="assignment-activity-classes">
    <resource>/WEB-INF/conf/process/appian-assignee-pool-functions.xml</resource>
  </configuration-object>
  <configuration-object name="escalation-function-config" type="com.appiancorp.process.admin.LoadEscalationACSchemas" depends="assignee-pool-activity-classes">
    <resource>/WEB-INF/conf/process/appian-escalation-functions.xml</resource>
  </configuration-object>
  <!-- end activity classes -->

  <configuration-object name="priority-config" type="com.appiancorp.process.admin.PriorityConfig" background="true">
    <resource>/WEB-INF/conf/process/priority-config-process.xml</resource>
    <pattern>/WEB-INF/conf/**/priority-config-process*.xml</pattern>
  </configuration-object>
  <configuration-object name="link-type-config" type="com.appiancorp.ap2.LoadLinkTypes" background="true">
    <resource>/WEB-INF/conf/link-type-config.xml</resource>
    <pattern>/WEB-INF/**/link-type-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="exception-handling-config" type="com.appiancorp.process.admin.LoadExceptionHandling" background="true">
    <resource>/WEB-INF/conf/process/exception-type-config-process.xml</resource>
    <pattern>/WEB-INF/conf/**/exception-type-config-process*.xml</pattern>
  </configuration-object>
  <configuration-object name="rdbms-driver-config" type="com.appiancorp.process.rdbms.DriverConfig" background="true">
    <resource>/WEB-INF/conf/process/rdbms/driver-config.xml</resource>
    <pattern>/WEB-INF/**/rdbms-driver-config*.xml</pattern>
  </configuration-object>

  <configuration-object name="palette-config" type="com.appiancorp.process.admin.LoadPalettes" depends="escalation-function-config,assignee-pool-activity-classes,assignment-activity-classes,system-activity-classes,activity-classes">
    <resource>/WEB-INF/conf/process/palette-config.xml</resource>
    <pattern>/WEB-INF/conf/**/palette-config*.xml</pattern>
  </configuration-object>

  <configuration-object name="processConfig" type="com.appiancorp.process.admin.ProcessConfig" depends="palette-config" background="true"/>
  <configuration-object name="userServiceContextInit" type="com.appiancorp.ap2.UserServiceContextInit" background="true"/>
  <configuration-object name="tempoAttachmentsConfig" type="com.appiancorp.tempo.config.TempoAttachmentsConfig"  />
  <configuration-object name="applications" type="com.appiancorp.applications.ApplicationsConfig" />

  <configuration-object name="rulesConfig" type="com.appiancorp.rules.RulesConfig"  />
  <configuration-object name="rulesWebConfig" type="com.appiancorp.rules.RulesWebConfig" depends="rulesConfig" />

  <configuration-object name="knowledgeConfig" type="com.appiancorp.km.KnowledgeConfig" />
  <configuration-object name="knowledgeWebConfig" type="com.appiancorp.km.KnowledgeWebConfig" depends="knowledgeConfig" background="true"/>

  <configuration-object name="InitializeSecurityConfig" type="com.appiancorp.asi.components.grid.internal.SecurityConfig">
    <pattern>/WEB-INF/conf/**/security-config-*.xml</pattern>
  </configuration-object>
  <configuration-object name="admin-console-config" type="com.appiancorp.admin.AdminConsoleConfig">
    <resource>/WEB-INF/conf/admin/admin-console-config.xml</resource>
    <pattern>/WEB-INF/conf/**/admin-console-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="enumeration-config" type="com.appiancorp.asi.enumerations.EnumerationConfig">
    <pattern>/WEB-INF/conf/**/enumeration-config-*.xml</pattern>
  </configuration-object>
  <configuration-object name="actor-config" type="com.appiancorp.process.admin.ActorConfig" background="true">
    <resource>/WEB-INF/conf/process/actor-config-process.xml</resource>
    <pattern>/WEB-INF/conf/**/actor-config-process*.xml</pattern>
  </configuration-object>
  <configuration-object name="date-time-config" type="com.appiancorp.ap2.DateTimeConfig" background="true" />
  <configuration-object name="message-type-config" type="com.appiancorp.messaging.MessageTypeConfig">
    <resource>/WEB-INF/conf/process/message-types.xml</resource>
    <pattern>/WEB-INF/conf/**/message-types*.xml</pattern>
  </configuration-object>
  <configuration-object name="topic-config" type="com.appiancorp.messaging.JmsTopicConfig" depends="message-type-config" background="true">
    <resource>/WEB-INF/conf/process/jms-topics.xml</resource>
    <pattern>/WEB-INF/conf/**/jms-topics*.xml</pattern>
  </configuration-object>
  <configuration-object name="analytics-config" type="com.appiancorp.process.analytics2.config.AnalyticsConfig" depends="migrate-system-reports-182" background="true">
    <resource>/WEB-INF/conf/analytics/analytics-config.xml</resource>
    <pattern>/WEB-INF/conf/**/analytics-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="analytics-metrics-config" type="com.appiancorp.process.analytics2.config.AnalyticsMetricsConfig" background="true"/>
  <configuration-object name="expression-editor-config" type="com.appiancorp.process.expression.ExpressionFunctionsConfig" background="true">
    <resource>/WEB-INF/conf/components/expeditor/expression-editor-config.xml</resource>
    <pattern>/WEB-INF/conf/**/expression-editor-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="autocomplete-config" type="com.appiancorp.asi.components.autocomplete.AutocompleteConfig" depends="rulesConfig"> <!--this dependency is a hack for the rules_folder autocomplete-->
    <pattern>/WEB-INF/conf/**/autocomplete-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="browse-config" type="com.appiancorp.asi.components.browse.BrowseConfig" depends="grid,displaymask">
    <pattern>/WEB-INF/conf/**/browse-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="displaymask" type="com.appiancorp.asi.components.display.DisplayMaskConfig" background="true">
    <resource>/WEB-INF/conf/components/display/default-display-masks.xml</resource>
    <pattern>/WEB-INF/conf/**/display-masks-*.xml</pattern>
  </configuration-object>
  <configuration-object name="search-config" type="com.appiancorp.asi.components.search.SearchConfig" depends="browse-config" background="true">
    <pattern>/WEB-INF/conf/**/search-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="security-manager-config" type="com.appiancorp.asi.components.securityManager.config.SecurityManagerConfig" background="true" >
    <resource>/WEB-INF/conf/components/securityManager/security-manager-config.xml</resource>
    <pattern>/WEB-INF/conf/**/security-manager-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="template-merge-config" type="com.appiancorp.asi.components.merge.TemplateMergerConfig" background="true">
    <pattern>/WEB-INF/conf/**/template-merge-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="email-address-config" type="com.appiancorp.process.common.util.EmailAddressConfig" background="true">
    <resource>/WEB-INF/conf/process/email-address-config.xml</resource>
    <resource>/WEB-INF/conf/process/email-address-config.xml</resource>
    <pattern>/WEB-INF/conf/**/email-address-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="calendar-config" type="com.appiancorp.ap2.CalendarConfig" background="true">
    <resource>/WEB-INF/conf/calendar-config.xml</resource>
    <pattern>/WEB-INF/conf/**/calendar-config*.xml</pattern>
  </configuration-object>
  <configuration-object name="json-client-functions" type="com.appiancorp.process.common.presentation.JSONClientFunctionsConfig" background="true">
    <resource>/WEB-INF/conf/json/json-client-functions.xml</resource>
    <pattern>/WEB-INF/conf/**/json-client-functions*.xml</pattern>
  </configuration-object>
  <configuration-object name="RegisterConfigurationFiles" type="com.appiancorp.common.config.RegisterConfigurationFiles" depends="system-groups-config"/>

  <!-- While ProcessPendingGroupsWorkQueue is run in the background, we still wait on it before ConfigObjects as a whole finishes -->
  <configuration-object name="ProcessPendingGroupsWorkQueue" type="com.appiancorp.common.initialize.ProcessPendingGroupsWorkQueue" background="true"/>

  <!-- Migration -->
  <configuration-object name="migrate-navigation-config" type="com.appiancorp.common.initialize.MigrateNavigationConfig" >
    <resource>/WEB-INF/conf/dataload/navigation/navigation-config.xml</resource>
  </configuration-object>
  <configuration-object name="migrate-dashboards" type="com.appiancorp.common.initialize.MigrateDashboards" />
  <configuration-object name="migrate-datasource-jndi-names" type="com.appiancorp.common.initialize.MigrateDataStoreJndiNames" />
  <configuration-object name="migrate-invalid-time-zones" type="com.appiancorp.common.initialize.MigrateInvalidTimeZones" />
  <configuration-object name="migrate-admin-console-properties" type="com.appiancorp.suite.cfg.adminconsole.migration.AdminConsoleMigrations" />
  <configuration-object name="migrate-process-models-datatype-references" type="com.appiancorp.common.initialize.MigrateProcessModelDatatypeReferences" depends="migrate-sail-components"/>
  <configuration-object name="migrate-outbound-integrations" type="com.appiancorp.connectedsystems.http.migration.configobject.MigratePersistedOutboundIntegrations"/>
  <configuration-object name="migrate-connected-systems" type="com.appiancorp.connectedsystems.http.migration.configobject.MigratePersistedConnectedSystems"/>
  <configuration-object name="migrate-system-reports-182" type="com.appiancorp.common.initialize.MigrateSystemReports182"/>
  <configuration-object name="migrate-decisions" type="com.appiancorp.decisiondesigner.migration.MigrateDecisions"/>
  <configuration-object name="migrate-blacklisted-rules-in-k" type="com.appiancorp.common.initialize.MigrateRemoveNonKEvaluableSystemRulesConfig" />
  <configuration-object name="migrate-record-types" type="com.appiancorp.common.initialize.recordtypes.MigrateRecordTypes"/>
  <configuration-object name="migrate-design-guidance-object-info" type="com.appiancorp.designguidance.migration.DesignGuidanceObjectInfoMigration"/>
  <configuration-object name="migrate-add-process-models-to-change-log" type="com.appiancorp.ix.analysis.migration.ProcessModelImpactAnalysisForPluginsMigration"/>
  <configuration-object name="migrate-stray-kafka-process-history" type="com.appiancorp.common.initialize.MigrateProcessHistoryStrayProcesses"/>
  <configuration-object name="migrate-mining-porcess-dependency" type="com.appiancorp.processHq.persistence.migration.MiningProcessDependencyMigration"/>
  <configuration-object name="migrate-process-hq-record-type" type="com.appiancorp.processhqrecord.persistence.migration.ProcessHqRecordTypeDependencyMigration"/>
  <configuration-object name="migrate-unified-sso-default-signin-page" type="com.appiancorp.common.initialize.MigrateUnifiedSsoDefaultSignInPage"/>
  <configuration-object name="migrate-unified-sso-self-selection-signin-page" type="com.appiancorp.common.initialize.MigrateUnifiedSsoSelfSelectionLinks"/>
</configuration-objects>
