Skip to main content
Version: Next (5.0)

Properties

Introduction​

Several properties can be specified inside your application.properties file, inside your application.yml file, or as command line switches. This document provides a list of common AWE properties and references to the underlying classes that consume them.


ℹ️ Property contributions can come from additional jar files on your classpath, so you should not consider this an exhaustive list. Also, you can define your own properties.


ℹ️ To know more about the rest of spring boot configuration properties, visit Spring Appendix A

AWE Base Properties​

These are the base application configuration properties for AWE projects. They have the prefix awe.application.

NameTypeDescriptionDefault value
awe.application.acronymStringApplication acronym (in lowercase).awe
awe.application.addressStringApplication address parameter name.address
awe.application.chart-server-urlStringUrl of the AWE chart server, which renders the charts of the server (ECharts model to SVG).http://localhost:7801
awe.application.component.chart-limit-point-serieIntegerLimit of points series in chart component.1000000
awe.application.component.computed-empty-if-nullBooleanEmpty computed values if one of the wildcards are emptytrue
awe.application.component.criteria-rows-per-pageIntegerRows per page in criteria component (Set to 0 to avoid pagination)100
awe.application.component.data-suffixStringSuffix of data parameter send from client.data
awe.application.component.download-file-idStringFile downloader component Id.d
awe.application.component.grid-columns-panelStringHow the toolbar of the grids that do not define columns-panel shows their Columns: popover (anchored to the Columns button), dialog (a modal dialog) or side-panel (a panel anchored to the right edge of the screen)popover
awe.application.component.grid-icon-loadingStringLoading indicator of the grids that do not define icon-loading: skeleton (placeholder rows with the grid columns on every load), skeleton-dim (placeholder rows on the first load, dimmed rows on a reload) or any other icon-loading value (spinner, dots...)skeleton
awe.application.component.grid-pixels-per-characterIntegerPixels per char in grids8
awe.application.component.grid-rows-per-pageIntegerRows per page in grid component (Set to 0 to avoid pagination)30
awe.application.component.help-timeoutDurationComponent help timeout in milliseconds.1000ms
awe.application.component.pivot-num-groupIntegerNumber of group element limit of pivot table component.5000
awe.application.component.sizeComponentSizeComponent sizemd
awe.application.component.suggest-timeoutDurationSuggest timeout in milliseconds.300ms
awe.application.component.tooltip.chat-timeoutDurationTimeout for chat messages (in milliseconds).0ms
awe.application.component.tooltip.error-timeoutDurationTimeout for error messages (in milliseconds).0ms
awe.application.component.tooltip.help-timeoutDurationTimeout for help messages (in milliseconds).5000ms
awe.application.component.tooltip.info-timeoutDurationTimeout for info messages (in milliseconds).0ms
awe.application.component.tooltip.ok-timeoutDurationTimeout for ok messages (in milliseconds).2000ms
awe.application.component.tooltip.validation-timeoutDurationTimeout for validation messages (in milliseconds).2000ms
awe.application.component.tooltip.warning-timeoutDurationTimeout for warning messages (in milliseconds).4000ms
awe.application.component.tooltip.wrong-timeoutDurationTimeout for wrong messages (in milliseconds).0ms
awe.application.component.upload-file-idStringFile uploader component Id.u
awe.application.component.upload-file-pathStringPath for file uploads (Relative to application.base.path starts with @)@upload/
awe.application.component.upload-max-file-sizeDataSizeMax size for uploaded files (in MB)100MB
awe.application.component.upload-max-files-folderIntegerMax elements per folder100
awe.application.default-roleStringApplication default user roleoperator
awe.application.densityStringApplication density: comfortable or compact. The density the user chooses overrides it.comfortable
awe.application.encodingStringBase encoding for all files.UTF-8
awe.application.extension-xmlStringXML file extension parameter name..xml
awe.application.filemanager.base-pathStringFile manager base path/
awe.application.filemanager.date-formatStringFile manager date formatyyyy-MM-dd hh:mm:ss
awe.application.files.actionsStringXml file name of actions definition.Actions
awe.application.files.componentsStringXml file name of components definition.Components
awe.application.files.emailStringXml file name of Email definition.Email
awe.application.files.enumeratedStringXml file name of enumerated definition.Enumerated
awe.application.files.localeStringXml file name of locales definition.Locale-
awe.application.files.maintainStringXml file name of maintains definition.Maintain
awe.application.files.menu-privateStringXml file name of private menu definition.private
awe.application.files.menu-publicStringXml file name of public menu definition.public
awe.application.files.queryStringXml file name of queries definition.Queries
awe.application.files.queueStringXml file name of Queues definition.Queues
awe.application.files.servicesStringXml file name of services definition.Services
awe.application.files.templatesStringXml file name of templates definition.Templates
awe.application.jms.enabledBooleanEnable AWE JMS service connector.false
awe.application.jms.message-time-to-liveDurationJms message time to live in milliseconds.0ms
awe.application.jms.service-timeoutDurationJms service timeout in milliseconds.10000ms
awe.application.json-onlyBooleanServe JSON only. AWE removes every XML-advertising HTTP message converter from the served list, so its wire format does not depend on whether an XML provider (such as jackson-dataformat-xml) reaches the classpath transitively. With it enabled an explicit Accept: application/xml answers 406 Not Acceptable. Set it to false to keep the XML converters; any other value leaves JSON-only active.true
awe.application.language-defaultStringApplication language in ISO 3166 and ISO 639 codes format. (en-GB = English from Great Britain)en-GB
awe.application.language-listList<String>Application available languages in ISO 3166 and ISO 639 codes format. (en-GB = English from Great Britain)en-GB, es-ES, fr-FR
awe.application.loading-timeoutDurationLoading timeout in milliseconds.10000ms
awe.application.log-groupStringDefine the parent path for application log files/application
awe.application.log-manager-pathStringDefine the path where awe log manager search the log files${logging.file.path:${java.io.tmpdir}}${awe.application.log.group:/application}
awe.application.log-user-enableBooleanFlag to activate log file appender by user.true
awe.application.login.backgroundStringBackground image of the sign-in page: the panel of the split layout, the backdrop of the card layout. When empty, awe.application.paths.image-startup-background if changed, else the AWE brand panel.empty
awe.application.login.background-effectStringName of a canvas effect the application registers for the image panel of the sign-in page (the split panel and the card backdrop; the form-only layout has no background). AWE ships no effect: the application registers the effects it writes in its own bundle and selects one here (see "Custom background effect" in the design system for the contract and examples). Empty means no effect, so the background image stays.empty
awe.application.login.footer-textStringFooter text of the sign-in page, for instance the copyright.empty
awe.application.login.language-selectorBooleanShow the language selector in the footer of the sign-in page, with the languages of awe.application.language-list.true
awe.application.login.layoutStringLayout of the sign-in page: split (the form column next to the background panel), form-only (the form centred alone) or card (the form in a card over the full-screen background). Any other value is split.split
awe.application.login.logoStringLogo of the sign-in page. When empty, awe.application.paths.image-startup-logo if changed, else the AWE logo.empty
awe.application.login.logo-darkStringLogo of the sign-in page in dark mode.empty (the logo)
awe.application.login.mode-selectorBooleanShow the light, dark and system colour mode selector in the footer of the sign-in page.true
awe.application.login.panel-subtitleStringText of the caption over the background image.SCREEN_TEXT_LOGIN_PANEL_SUBTITLE
awe.application.login.panel-titleStringTitle of the caption over the background image.SCREEN_TEXT_LOGIN_PANEL_TITLE
awe.application.login.powered-byBooleanShow "Powered by AWE" in the footer of the sign-in page.true
awe.application.login.subtitleStringSubtitle of the sign-in form.SCREEN_TEXT_LOGIN_SUBTITLE
awe.application.login.titleStringTitle of the sign-in form.SCREEN_TEXT_LOGIN_TITLE
awe.application.map.tile-urlStringUrl template of the map tiles, with the {z}, {x} and {y} placeholders. Mind the usage policy of the tile server: the default OpenStreetMap server is meant for light use, so use your own tile server for heavy traffic.https://tile.openstreetmap.org/{z}/{x}/{y}.png
awe.application.menu-search-enabledBooleanEnable the menu option search box.true
awe.application.menu-typeMenuTypeMenu position layout typehorizontal
awe.application.module-listString[]List with application modules separate by commas. Used to load xml files for each module.
awe.application.nameStringApplication nameAWE (Almis Web Engine)
awe.application.parameter.passwordStringScreen password parameter value.pwd_usr
awe.application.parameter.tokenStringToken parameter name.t
awe.application.parameter.usernameStringScreen username parameter value.cod_usr
awe.application.paths.applicationStringApplication folder path./application/
awe.application.paths.baseStringApplication base path./
awe.application.paths.documentsStringDocuments folder path.static/docs/
awe.application.paths.globalStringGlobal folder path./global/
awe.application.paths.icon-faviconStringFavicon icon path. Uses application.paths.images as parent path.images/icon/favicon-awe.ico
awe.application.paths.icon-phoneStringApple icon 57x57 path. Uses application.paths.images as parent path.images/icon/favicon-awe.ico
awe.application.paths.icon-tabletStringApple icon 114x114 path. Uses application.paths.images as parent path.images/icon/favicon-awe.ico
awe.application.paths.image-navbar-logoStringNavigation bar logo. Uses application.paths.images as parent path.../images/logo/awe-logo-mark.svg
awe.application.paths.image-startup-backgroundStringSign-in screen background image. Uses application.paths.images as parent path. Deprecated for the sign-in page: use awe.application.login.background instead (this value is its fallback); in AngularJS it still styles the change password and two-factor screens.../images/background/signin-bg-1.jpg
awe.application.paths.image-startup-logoStringSign-in screen logo. Uses application.paths.images as parent path. Deprecated for the sign-in page: use awe.application.login.logo instead (this value is its fallback); in AngularJS it still styles the change password and two-factor screens.../images/logo/logo-awe-nuevo.svg
awe.application.paths.imagesStringImages folder path.images/
awe.application.paths.jrxStringJasper jrx folder path./jrx/
awe.application.paths.localeStringLocale folder path./locale/
awe.application.paths.menuStringMenu folder path./menu/
awe.application.paths.profileStringProfile folder path./profile/
awe.application.paths.reportsStringReports destination folder path.@reports/
awe.application.paths.reports-historicStringHistoric report's destination folder path.@historicReports/
awe.application.paths.screenStringScreen folder path./screen/
awe.application.paths.serverStringServer path. Used for set initial URLempty ""
awe.application.paths.tagStringTag folder path.tags/
awe.application.paths.tag-angularStringTag angular folder path.tags/angular/
awe.application.paths.tempStringTemp folder path./tmp
awe.application.paths.templatesStringTemplates folder path.templates/
awe.application.paths.templates-angularStringAngular templates folder path.angular
awe.application.print-all-options-enableBooleanShow all print optionstrue
awe.application.reload-current-screenBooleanReload current screen.false
awe.application.screen.change-passwordStringChange password screen name.change_password
awe.application.screen.homeStringHome screen name.home
awe.application.screen.initialStringDefault initial screen name.information
awe.application.task.pool.await-terminationDurationTask executor await termination in seconds.120s
awe.application.task.pool.contextless-thread-prefixStringAWE context less Pool executor threads prefix.AweInitThread-
awe.application.task.pool.help-thread-prefixStringAWE Help Pool executor threads prefix.AweHelpThread-
awe.application.task.pool.max-sizeIntegerTask executor pool max elements.50
awe.application.task.pool.queue-sizeIntegerTask executor queue size.1000
awe.application.task.pool.sizeIntegerTask executor pool size.20
awe.application.task.pool.thread-prefixStringAWE Pool executor threads prefix.AweThread-
awe.application.themeStringApplication theme.sky
awe.application.theme-modeStringApplication theme mode: light, dark or system (follows the operating system). It overrides the mode of the theme; the mode the user chooses overrides it.empty (the mode of the theme, else system)
awe.application.theme-primaryStringApplication theme primary colour: one of the AWE 5 palettes (emerald, green, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, red, orange, amber, yellow, lime) or a hex colour (#RGB or #RRGGBB). It overrides the primary colour of the theme.empty (the primary colour of the theme, else emerald)
awe.application.theme-surfaceStringApplication theme surface: one of the AWE 5 neutral palettes (slate, gray, zinc, neutral, stone), auto or a hex colour (#RGB or #RRGGBB). It overrides the surface of the theme.empty (the surface of the theme, else auto)
awe.application.xml-hot-reloadBooleanEnable XML definition hot reload (development only).false
awe.application.xml-hot-reload-sourcesList<String>Source directories to watch for XML hot reload (e.g. src/main/resources). Changed XML files are copied to the matching classpath location before reloading.empty list
awe.application.xstream-driver-typeXStreamDriverTypeXStream driverdom

AWE Database Properties​

These are the database configuration properties for AWE projects. They have the prefix awe.database.

NameTypeDescriptionDefault value
awe.database.audit-actionStringName of Action column in audit tables.HISact
awe.database.audit-dateStringName of Date column in audit tables.HISdat
awe.database.audit-enableBooleanEnable audit operations in AWE database engine.true
awe.database.audit-lagDurationAudit lag in milliseconds. Used to built a timestamp in audit process.100ms
awe.database.audit-userStringName of User column in audit tables.HISope
awe.database.batch-maxIntegerChunk size for batch operations.100
awe.database.enabledBooleanEnable awe database loading beans.true
awe.database.limit-log-sizeIntegerLimit log size when a query is printed (0 to disable)0
awe.database.log-masked-fieldsString[]Columns whose values are masked in the SQL written to the logs and to query errors (case-insensitive). The value written to or compared with these columns is shown as '********'. The values of hashed and encrypted variables (STRING_HASH_*, STRING_ENCRYPT) are always masked.l1_pas
awe.database.migration-modulesString[]List of modules separated by comma to be migrated by flyway.AWE
awe.database.multidatabase-enableBooleanEnable multi database. Enable a custom datasource to allow connections to multiple database.false
awe.database.parameter-nameStringDatabase criterion name. Configure the database parameter to retrieve the value from screen context._database_

AWE Datasource Pool Properties​

AWE builds a connection pool for every database connection it loads (multidatabase). These are the Hikari pool settings it applies to all of them, under the Spring spring.datasource prefix. They do not apply to JNDI datasources.

NameTypeDescriptionDefault value
spring.datasource.hikari.connection-test-queryStringQuery used to check that a connection is alive before it is handed out, for every datasource AWE creates from its database connections (multidatabase). When it is not set, the JDBC driver validation is used. It does not apply to JNDI datasources.
spring.datasource.hikari.connection-time-outLongMaximum time, in milliseconds, to wait for a connection from the pool of every datasource AWE creates from its database connections (multidatabase). It does not apply to JNDI datasources.30000
spring.datasource.hikari.maximum-pool-sizeIntegerMaximum number of connections in the pool of every datasource AWE creates from its database connections (multidatabase). It does not apply to JNDI datasources.10
spring.datasource.hikari.minimum-idleIntegerMinimum number of idle connections kept in the pool of every datasource AWE creates from its database connections (multidatabase). It does not apply to JNDI datasources.10

AWE Maintain Properties​

These are the maintain configuration properties for AWE projects. They have the prefix awe.maintain. The multiple-maintain validation mode applies only to SQL-backed multiple maintain targets; service-delegated (serve), queue and email maintains are not affected. The transaction boundary of each maintain is described in Transactions.

NameTypeDescriptionDefault value
awe.maintain.multiple.validation-modeMaintainValidationModeValidation behavior when a multiple maintain has no declared non-audit list variable.
- strict (default): throw an error, protecting new development.
- warn: log a warning with the operation id and skip the operation, preserving pre-4.12.1 no-op semantics during migration.
strict
awe.maintain.transaction.enabledBooleanRun each maintain inside a transaction of its DataSource. Nested maintains and retrieve-data steps on the same DataSource join it, and any failure or ERROR result rolls the whole maintain back. Disable it to keep the previous behavior: each maintain commits its own connection independently.true

AWE Security Properties​

These are all security configuration properties for AWE projects. They have the prefix awe.security.

NameTypeDescriptionDefault value
awe.security.allowed-origin-patternsString[]List with allowed origin paths separate by commas.*
awe.security.audit.anonymize-ipBooleanAnonymize the client address of every event: the last octet of IPv4 addresses and everything after the first 48 bits of IPv6 addresses are set to zero.false
awe.security.audit.database.enabledBooleanStore the events in the AweSecAudEvt table.true
awe.security.audit.database.purge-cronStringCron expression (Spring format, server time zone) of the purge of expired events.0 0 3 * * *
awe.security.audit.database.retention-daysIntegerDays an event is kept in the AweSecAudEvt table before the purge deletes it. 0 keeps the events forever.365
awe.security.audit.enabledBooleanRecord security events (logins, logouts, locks, password and second factor changes, denied accesses and REST tokens). When disabled no event is recorded by any sink and nothing is purged.true
awe.security.audit.log.enabledBooleanWrite every event as one JSON line on the awe.security.audit logger (INFO level), to be shipped to a SIEM.true
awe.security.audit.metrics.enabledBooleanCount the events on the awe.security.audit.events Micrometer counter (tags type, outcome, channel and cause). Only applies when the observability starter (or another Micrometer registry) is present.true
awe.security.auth-custom-providersList<String>Authentication custom class providers. Used to implement your custom authentication provider
awe.security.auth-modeAuthTypeAuthentication modebbdd
awe.security.default-restrictionStringDefault restriction set (default should be the most restricted).general
awe.security.json-encrypt-enableBooleanEnable json encryption in between client-serverfalse
awe.security.json-parameterStringEncrypted parameter list name.p
awe.security.ldap.base-dnStringLdap base domain for search.empty (Root Dn)
awe.security.ldap.connect-timeoutDurationLdap connection timeout in millis. Set com.sun.jndi.ldap.connect.timeout environment property5000ms
awe.security.ldap.password-bindStringLdap user bind password.
awe.security.ldap.read-timeoutDurationLdap read timeout in millis. Set com.sun.jndi.ldap.read.timeout environment property5000ms
awe.security.ldap.urlString[]Ldap server url. Set server values separate by commas when you need config more than one.ldap://localhost:389
awe.security.ldap.user-bindStringLdap user bind search pattern.
awe.security.ldap.user-filterStringLdap user login property name. Examples of filters: In WINDOWS environment sAMAccountName={0} In UNIX environment uid={0}sAMAccountName={0}
awe.security.lockout.max-attemptsIntegerConsecutive failed local logins (wrong password) after which the account is locked. A successful login resets the count, and an administrator unlocks the account from the user screen. 0 switches the automatic lockout off.0
awe.security.master-keyStringMaster key used to encrypt stored data (encrypted parameters and properties). Required: there is no default value. Applications upgraded from AWE 4 that never configured it must set the former default value (see the AWE 5 migration guide) to keep decrypting their stored data, and rotate it afterwards.
awe.security.password-encoderPasswordEncoderTypeAlgorithm used to hash new user passwords: bcrypt or ripemd160. Stored hashes of every algorithm keep validating, and with bcrypt the legacy RIPEMD-160 hashes are rehashed on the next successful login. Set ripemd160 only when the application's own XML descriptors or external systems compare the stored hash (ope.l1_pas) and cannot be adapted yet.bcrypt
awe.security.password-min-lengthIntegerPassword minimum length. Used in criteria validation field4
awe.security.password-patternStringPassword regex pattern. Used in criteria validation field.*
awe.security.role-prefixStringRole prefix to build user grants in spring securityROLE_
awe.security.same-origin-enableBooleanEnable same origin in http headers. Avoid cross domain frame requests.true
awe.security.sso.auto-launchBooleanWhen Auto Launch is enabled, the login page will automatically redirect the user to the OAuth authorization url, to log in with OAuthfalse
awe.security.sso.auto-provision-userBooleanFlag to enable auto provisioning users in oauth2 authentication process. Create new record in ope table with usertrue
awe.security.sso.back-channel-logout.connect-timeoutDurationConnection timeout of the internal logout call made for each session named by a logout token. Keeps the provider request from hanging when the logout address cannot be reached. Default 2 seconds.2s
awe.security.sso.back-channel-logout.enabledBooleanEnable OIDC back-channel logout when SSO is enabled. The identity provider calls /logout/connect/back-channel/{registrationId} with a signed logout token and AWE ends the matching sessions (web session and the AWE state kept for it, such as websocket connections). Off by default.false
awe.security.sso.back-channel-logout.logout-uriStringAddress AWE calls on itself to end each session named by a logout token, sending the session cookie. Placeholders {baseUrl}, {baseScheme}, {baseHost}, {basePort}, {basePath} and {registrationId} are resolved from the provider request. Empty by default, which uses {baseUrl/logout/connect/back-channel/{registrationId}}. Set it when the public address is not reachable from the server itself, for example http://localhost:8080{basePath/logout/connect/back-channel/{registrationId}}.
awe.security.sso.back-channel-logout.read-timeoutDurationRead timeout of the internal logout call made for each session named by a logout token. A session whose call times out is reported to the provider as not ended. Default 5 seconds.5s
awe.security.sso.break-glass-usersList<String>Emergency (break-glass) users that can still sign in with username and password while awe.security.sso.local-login is false, for example when the identity provider is down. Empty by default (nobody). Every use is logged at WARN level. Keep the list short and use strong passwords.
awe.security.sso.enable-azure-buttonBooleanEnable the Azure SSO button. Used in Signin screenfalse
awe.security.sso.enable-generic-sso-buttonBooleanEnable the Generic SSO button. Used in signin screenfalse
awe.security.sso.enable-google-buttonBooleanEnable Google SSO button. Used in signin screenfalse
awe.security.sso.enabledBooleanEnable SSO flow loginfalse
awe.security.sso.filter-authority-prefixStringUsed to filtering granted authorities in post authentication process
awe.security.sso.local-loginBooleanAllow local (username and password) login when SSO is enabled. Set to false to make the identity provider the only way to sign in: the login screen hides the local form and the local login endpoints (/action/login and /api/authenticate) refuse every user except the ones listed in awe.security.sso.break-glass-users. It has no effect when SSO is disabled.true
awe.security.sso.multitenant.default-tenantStringDefault tenant (used when no subdomain is detected)default
awe.security.sso.multitenant.enabledBooleanEnable SSO multitenant.false
awe.security.sso.multitenant.tenant-mappingsMap<String,String>Optional: Explicit mapping from tenant (subdomain) to registration ID If empty, convention is used: tenant name = registration ID Example: "acme" -> "keycloak-acme"
awe.security.sso.overwrite-profile-with-default-roleBooleanWhen false (default), an existing user's profile is kept as-is and not overwritten with the application default role (awe.application.default-role) when the SSO provider claim carries no role (or none of the granted authorities match awe.security.sso.filter-authority-prefix). Set to true to restore the previous behaviour, where the default role always overwrites the stored profile in that case.false
awe.security.sso.require-roleBooleanRequire a role from the identity provider that maps to an existing AWE profile (fail closed). When required and no role maps, the SSO login is refused with an error page, for new and existing users alike, and the stored profile and awe.application.default-role are not used. Not set by default, which means required when awe.security.sso.local-login is false (IdP-first) and not required otherwise. Set it to false to opt in to the default role fallback in IdP-first, or to true to require a role in any SSO setup.
awe.security.sso.roles-claimsList<String>Claims of the ID token that carry the user's roles, read in order and joined. A dotted name walks nested objects unless the token has a claim with that exact name. Examples: realm_access.roles (Keycloak realm roles, the default), resource_access.my-client.roles (Keycloak client roles), roles (Microsoft Entra ID app roles). When several roles carry the prefix, the first name in alphabetical order that exists as an AWE profile is used. Ignored when the application declares its own realmRolesAuthoritiesConverter bean.
awe.security.sso.user-name-attributeStringThe name of the attribute used to extract the username during the SSO authentication process. This attribute is typically sourced from the claims provided by the OAuth2 or OIDC identity provider.preferred_username
awe.security.totp.activate-screenStringInitial screen to force enable TOTPactivate-2fa
awe.security.totp.enabledSecondFactorStatusTypeDisable, enable or force the TOTPdisabled
awe.security.totp.initial-screenStringInitial screen to check TOTPcheck-2fa
awe.security.xstream-allow-pathsString[]Allows paths for xstream serializer.java.*, com.almis.awe.model.entities.**

AWE Numeric Properties​

These are the numeric configuration properties for AWE projects. They have the prefix awe.numeric.

NameTypeDescriptionDefault value
awe.numeric.currency-placeStringControls the placement of the currency symbol for numeric component. Use s for suffix to the right or p for prefix to the left.s
awe.numeric.currency-signStringDesired currency symbol for numeric component.empty string
awe.numeric.decimal-numbersIntegerNumber of decimals for numeric component.5
awe.numeric.empty-valueStringControls controls input display behavior for numeric component.empty
awe.numeric.formatNumericFormatTypeNumber format separator for input numeric.eur
awe.numeric.group-decimalIntegerControls the digital grouping - the placement of the thousand separator for numeric component.3
awe.numeric.max-valueDoubleMaximum value for numeric component.9999999999.99
awe.numeric.min-valueDoubleMinimum value for numeric component.-9999999999.99
awe.numeric.padding-with-zerosBooleanPadding with zeros to complete format number in numeric component.false
awe.numeric.pattern-formattedStringNumeric format for field pattern value.###,###.####
awe.numeric.pattern-unformattedStringNumeric format for field pattern value (plain, without a thousand separators).######.####
awe.numeric.round-typeRoundingTypeRounding type for numeric operations.half-up-symmetric
awe.numeric.separator-decimalStringDecimal separator for numeric component.,
awe.numeric.separator-thousandStringThousands separator for numeric component..

AWE Session Properties​

These are the session configuration properties for AWE projects. They have the prefix awe.session.

NameTypeDescriptionDefault value
awe.session.parameterMap<String,String>Parameters map injected to session when the application context is starting. Ex: [ParameterName, QueryName]

AWE Email Properties​

These are the Email engine configuration properties for AWE projects. They have the prefix awe.mail.

NameTypeDescriptionDefault value
awe.mail.authBooleanEmail authentication. Flag to specify if authentication is needed.false
awe.mail.debugBooleanExecute email in debug mode.false
awe.mail.enabledBooleanFlag to enable awe email features.false
awe.mail.hostStringEmail server host
awe.mail.localhostStringName of local smtp server.localhost
awe.mail.passStringEmail server auth password
awe.mail.portIntegerEmail server port.25
awe.mail.sslBooleanFlag to specify the usage of SSL protocol.false
awe.mail.tlsBooleanFlag to specify the usage of TLS protocol.false
awe.mail.userStringEmail server auth username

AWE Developer Properties​

These are the Developer module configuration properties for AWE projects. They have the prefix awe.developer.

NameTypeDescriptionDefault value
awe.developer.pathStringDeveloper path. Used to manage the locale files.${user.home}/awe-developer
awe.developer.path-fileStringPath file namepath.properties
awe.developer.path-propertyStringPath property namepath.project
awe.developer.translation-serviceTranslationServiceEnumTranslation servicemy-memory
awe.developer.translation.mymemory.emailStringTranslation service reference emailawe@almis.com
awe.developer.translation.mymemory.hostStringMyMemory translation service hostapi.mymemory.translated.net
awe.developer.translation.mymemory.keyStringMyMemory api key
awe.developer.translation.rapidapi.emailStringTranslation service reference emailawe@almis.com
awe.developer.translation.rapidapi.hostStringTranslation service hosttranslated-mymemory---translation-memory.p.rapidapi.com
awe.developer.translation.rapidapi.keyStringRapid API Key

AWE Rest Properties​

These are the REST connector and Microservice connector configuration properties for AWE projects. They have the prefix awe.rest.

NameTypeDescriptionDefault value
awe.rest.api.auth.modeRestAuthenticationModeREST authentication mode. "local-jwt" authenticates with a token issued by AWE (/api/authenticate); "oauth2-resource-server" validates access tokens issued by an external OAuth2/OIDC provider.local-jwt
awe.rest.api.doc-contact-emailStringOpen API Contact email.
awe.rest.api.doc-contact-nameStringOpen API Contact name.
awe.rest.api.doc-contact-urlStringOpen API Contact url.
awe.rest.api.doc-descriptionStringOpen API Info description.Rest API to access AWE services
awe.rest.api.doc-external-descriptionStringOpen API External doc description.
awe.rest.api.doc-external-urlStringOpen API External doc url.
awe.rest.api.doc-license-nameStringOpen API License name.Apache 2.0
awe.rest.api.doc-license-urlStringOpen API License url.https://www.apache.org/licenses/LICENSE-2.0.html
awe.rest.api.doc-terms-of-service-urlStringOpen API Terms of service url.
awe.rest.api.doc-titleStringOpen API Info titleAWE Rest API
awe.rest.api.doc-versionStringOpen API Info version.v1.0.0
awe.rest.api.jwt.authorization-headerStringAuthentication header name.Authorization
awe.rest.api.jwt.expiration-timeDurationJWT time valid token to expire. You can use Duration format (1ms, 1s, 1m, 1h, 1d, ...) See Duration60m
awe.rest.api.jwt.issuerStringJWT issuer name.AWE ISSUER
awe.rest.api.jwt.prefixStringJWT token prefix.Bearer
awe.rest.api.jwt.secretStringJWT secret used to sign the tokens. Defaults to the AWE master key (awe.security.master-key), or to the legacy awe.security.master.key when it is set.${awe.security.master-key}
awe.rest.api.oauth2-resource-server.jwt.audiencesList<String>Accepted values of the "aud" claim. Required (at least one) in oauth2-resource-server mode; a token is accepted when its audience matches any of them exactly.
awe.rest.api.oauth2-resource-server.jwt.issuer-uriStringIssuer URI of the provider. Tokens are accepted only when their "iss" claim matches it. Either this or the JWK set URI is required in oauth2-resource-server mode.
awe.rest.api.oauth2-resource-server.jwt.jwk-set-uriStringURI of the provider JSON Web Key set used to verify the token signature. Either this or the issuer URI is required in oauth2-resource-server mode.
awe.rest.api.oauth2-resource-server.principal.client-display-name-claimsList<String>Token claims, in order of precedence, holding the display name of an application token. The first non-blank one is used; the principal username when none is found.app_displayname, azp, appid, client_id, clientId
awe.rest.api.oauth2-resource-server.principal.client-id-claimsList<String>Token claims, in order of precedence, holding the client identifier of an application token (one without a delegated username). The first non-blank one is used; the "sub" claim when none is found.azp, appid, client_id, clientId, sub
awe.rest.api.oauth2-resource-server.principal.client-principal-prefixStringPrefix added to the client identifier to build the username of an application token.client:
awe.rest.api.oauth2-resource-server.principal.default-profileStringAWE profile assigned when the token does not provide one. When it is not set, the application default role (awe.application.default-role) is used.
awe.rest.api.oauth2-resource-server.principal.delegated-display-name-claimsList<String>Token claims, in order of precedence, holding the display name of a delegated (user) token. The first non-blank one is used; the username when none is found.name, preferred_username, email
awe.rest.api.oauth2-resource-server.principal.delegated-email-claimsList<String>Token claims, in order of precedence, holding the email of a delegated (user) token. The first non-blank one is used.email, upn, preferred_username
awe.rest.api.oauth2-resource-server.principal.delegated-username-claimsList<String>Token claims, in order of precedence, holding the username of a delegated (user) token. The first non-blank one is used.preferred_username, upn, email, oid
awe.rest.api.oauth2-resource-server.principal.profile-claimStringToken claim holding the AWE profile to assign to the principal. When it is not set or the token does not carry it, the default profile is used.
awe.rest.api.openapi.oauth2.authorization-urlStringAuthorization endpoint of the provider, used by Swagger UI to start the authorization code flow.
awe.rest.api.openapi.oauth2.client-idStringClient identifier of the public application Swagger UI authenticates with.
awe.rest.api.openapi.oauth2.scopesMap<String,String>Scopes offered by Swagger UI, mapped to their description.
awe.rest.api.openapi.oauth2.token-urlStringToken endpoint of the provider, used by Swagger UI to exchange the authorization code.
awe.rest.api.openapi.oauth2.use-pkceBooleanUse PKCE (Proof Key for Code Exchange) in the Swagger UI authorization code flow.true
awe.rest.authenticationServiceAuthService authentication
awe.rest.client-enabledBooleanEnable AWE application as Eureka Client.false
awe.rest.connection-request-timeoutDurationTimeout for waiting for a connection from the connection manager.5000ms
awe.rest.connection-timeoutDurationRest connection timeout in millis5000ms
awe.rest.response-timeoutDurationResponse timeout in millis that covers the entire request-response cycle5000ms
awe.rest.servicesMap<String,ServiceDetails>Map with rest service info used by AWE microservice and REST connector. [Service name, Object with service details]

Examples Rest services definitions​

application.properties
################################################
# Microservices properties
################################################
awe.rest.services.clients-microservice.base-url=http://localhost:8081
# Microservice parameters
awe.rest.services.clients-microservice.parameters[0].name=database
awe.rest.services.clients-microservice.parameters[0].type=session
awe.rest.services.clients-microservice.parameters[1].name=username
awe.rest.services.clients-microservice.parameters[1].type=session
awe.rest.services.clients-microservice.parameters[2].name=currentDate
awe.rest.services.clients-microservice.parameters[2].type=session
awe.rest.services.clients-microservice.parameters[3].name=numPar
awe.rest.services.clients-microservice.parameters[3].value=3
# microservices.[service-name] to overwrite microservice base endpoint
awe.rest.services.other-service.name=other-service-bis
awe.rest.services.other-service.base-url=http://localhost:8082

################################################
# Rest services properties
################################################
awe.rest.services.local.base-url=http://localhost:18081
awe.rest.services.island.base-url=https://apis.is
awe.rest.services.postman.base-url=https://postman-echo.com
# Rest security
awe.rest.services.postman.authentication.type=basic
awe.rest.services.postman.authentication.username=postman
awe.rest.services.postman.authentication.password=password

AWE Scheduler Properties​

These are the Scheduler module configuration properties for AWE projects. They have the prefix awe.scheduler.

NameTypeDescriptionDefault value
awe.scheduler.connection-test-timeoutDurationTimeout in seconds for the interactive connection test on the server screens, deliberately shorter than the batch-oriented sshConnectTimeout10s
awe.scheduler.execution-log-batch-sizeIntegerDatabase-mode dirty-slot count that triggers an eager flush, and the maximum number of queued events drained per writer poll cycle.200
awe.scheduler.execution-log-callback-captureBooleanApplication-side kill switch for tagging an admitted remote-maintain callback with the propagated execution key (D3, D7). Gates only the callback filter bean; has no effect on the scheduler's own header, which is always sent, nor on the database execution-log store selection itself.true
awe.scheduler.execution-log-flush-intervalDurationDatabase-mode time-based flush trigger; kept below the log-viewer's 5s autorefresh so a running execution keeps tailing live.2s
awe.scheduler.execution-log-max-line-lengthIntegerDatabase-mode defensive per-line character cap, independent of the line-count window.1000
awe.scheduler.execution-log-max-linesIntegerDatabase-mode execution log window size (head + tail lines retained per execution).1000
awe.scheduler.execution-log-pathStringScheduler execution log path. A single placeholder: the property itself, or by default the logging folder (or the temporary folder) followed by /scheduler.${logging.file.path:${java.io.tmpdir}}/scheduler
awe.scheduler.execution-log-patternStringScheduler execution log pattern%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p : %m%n%wEx
awe.scheduler.execution-log-queue-capacityIntegerDatabase-mode bounded async capture queue capacity. Overflow drops lines rather than blocking the task.10000
awe.scheduler.execution-log-storeExecutionLogStoreTypeExecution log store selection: file (default, on-disk, unchanged behavior) or database (opt-in, persists to the shared scheduler datasource). An unrecognized value fails application context startup instead of silently falling back.file
awe.scheduler.remote-callback-passwordStringRemote password
awe.scheduler.remote-callback-secure-enabledBooleanRemote call is secured (Auth is required)true
awe.scheduler.remote-callback-urlURIURL to call from remote scheduler instance
awe.scheduler.remote-callback-userStringRemote user name
awe.scheduler.remote-enabledBooleanFlag which indicates if scheduler is in a separate instancefalse
awe.scheduler.remote-scheduler-urlURIURL to call to remote scheduler instance
awe.scheduler.report-email-from-valueStringScheduler report emailscheduler@almis.com
awe.scheduler.scheduler-instanceBooleanFlag which indicates if instance is a separate scheduler instancefalse
awe.scheduler.ssh-connect-timeoutDurationSSH connect and authentication timeout in seconds30s
awe.scheduler.ssh-host-key-policySshHostKeyPolicySSH host-key verification policy for remote command execution.accept-on-first-use
awe.scheduler.ssh-known-hosts-pathStringPath to the known_hosts file used to persist/read trusted SSH host keys.${user.home}/.ssh/known_hosts
awe.scheduler.stored-executionsIntegerNumber of executions to stored in log5
awe.scheduler.task-pool.max-sizeIntegerScheduler task pool max size50
awe.scheduler.task-pool.queue-sizeIntegerScheduler task pool queue capacity1000
awe.scheduler.task-pool.sizeIntegerScheduler task pool size20
awe.scheduler.task-pool.terminationDurationScheduler task pool termination (in seconds). You can use Duration format (1ms, 1s, 1m, 1h, 1d, ...) See Duration120s
awe.scheduler.task-timeoutDurationScheduler tasks default timeout in seconds1800s
awe.scheduler.tasks-load-on-startBooleanFlag to load tasks on start applicationtrue

AWE Websocket Properties​

These are the Websocket STOMP configuration properties for AWE projects. They have the prefix awe.websocket.

NameTypeDescriptionDefault value
awe.websocket.stomp.client-loginStringClient login for STOMP broker
awe.websocket.stomp.client-passcodeStringClient password for STOMP broker
awe.websocket.stomp.destination-prefixesList<String>Destination prefixes for message broker./topic, /queue
awe.websocket.stomp.enable-stomp-broker-relayBooleanEnable STOMP broker relay instead of simple brokerfalse
awe.websocket.stomp.relay-hostStringRelay host for STOMP brokerlocalhost
awe.websocket.stomp.relay-portIntegerRelay port for STOMP broker61613
awe.websocket.stomp.system-loginStringSystem login for STOMP broker
awe.websocket.stomp.system-passcodeStringSystem password for STOMP broker
awe.websocket.stomp.virtual-hostStringVirtual host for STOMP broker, used to segregate applications sharing the same broker. When not set, the broker applies its own default (the relay host)

AWE Notifier Properties​

These are the Notifier module configuration properties for AWE projects. They have the prefix awe.notifier.

NameTypeDescriptionDefault value
awe.notifier.from-emailStringNotification email: From field email value
awe.notifier.from-nameStringNotification email: From field name

AWE Observability Properties​

These are the configuration properties of the observability starter (awe-observability-spring-boot-starter), which adds health checks, metrics and traces. They have the prefix awe.observability. See the Observability guide.

NameTypeDescriptionDefault value
awe.observability.enabledBooleanEnable the observability starter (health checks, metrics and traces). Set it to false to switch everything it contributes off without removing the dependency.true
awe.observability.health-timeoutDurationMaximum time a health check waits for a database or queue connection to answer before it reports the connector as down.2s
awe.observability.max-tag-valuesIntegerMaximum number of distinct values of the id and screen tags of each AWE meter. Values beyond it are reported as other, so a forged or unexpected identifier never adds series.1000
awe.observability.usage.exports.enabledBooleanCount and time the prints and exports of the screens (awe.export timer, tagged by screen and format).true
awe.observability.usage.files.enabledBooleanCount the files uploaded and downloaded and sum their bytes (awe.files summary, tagged by direction).true
awe.observability.usage.screens.enabledBooleanCount and time the screens built for a menu option (awe.screen timer, tagged by option and screen).true
awe.observability.usage.users.enabledBooleanPublish the users connected and the connections open right now (awe.users.connected and awe.connections.active gauges, per instance).true

AWE Test Properties​

These are the configuration properties of the AWE testing module (awe-testing), used by the Selenium and Playwright integration tests. They have the prefix awe.test.

NameTypeDescriptionDefault value
awe.test.allowed-recordingBooleanEnable recording test videotrue
awe.test.browserBrowserTypeSelenium browser typechrome
awe.test.browser-containerStringBrowser container servicebrowser
awe.test.browser-displayIntegerBrowser display service99
awe.test.browser-heightIntegerSelenium browser height size1024
awe.test.browser-hostStringBrowser host servicebrowser
awe.test.browser-portIntegerBrowser port service4444
awe.test.browser-widthIntegerSelenium browser width size1280
awe.test.context-pathStringContext path of selenium tests/
awe.test.frontendFrontendTypeFrontend type for testsangular
awe.test.playwright.no-sandboxBooleanWhether Chromium runs without its sandbox (--no-sandbox). Left empty it is automatic: it runs without the sandbox when it is headless, or when the process runs as root or inside a container (Docker, Podman or Kubernetes), where the sandbox cannot start. Set it to false to keep the sandbox in such an environment, or to true to remove it
awe.test.playwright.traceEvidenceModePlaywright trace of each test (opened with npx playwright show-trace file.zip or at trace.playwright.dev): off, on-failure (a trace for each failed test, the default) or always. The trace has the screenshots of every action, which cost next to nothingon-failure
awe.test.playwright.trace-snapshotsBooleanWhether the trace also takes the DOM snapshots of every action, which the Trace Viewer shows as the page you can inspect before and after each one. They make a run about 40% slower, so they are off by default: turn them on to investigate a failure that the screenshots do not explainfalse
awe.test.playwright.videoEvidenceModePlaywright page video of a test class (the browser lasts the whole class, so the video is one per class, with the start of each test in a .video-times.txt next to it): off, on-failure (kept only when a test of the class failed, the default) or always. It is independent of awe.test.allowed-recording, which belongs to the screen recorder of the Selenium toolon-failure
awe.test.recorder-urlStringUrl of recorder servicehttp://recorder:3000
awe.test.remote-browserBooleanEnable remote browserfalse
awe.test.screenshot-pathStringSelenium screenshots path reporttarget/tests/selenium/screenshots/
awe.test.server-hostStringServer host of selenium tests
awe.test.server-portIntegerServer port of selenium tests8080
awe.test.show-mouseBooleanEnable capture mouse icon in selenium teststrue
awe.test.start-urlStringStart Url of selenium tests
awe.test.timeoutDurationSelenium timeout60s
awe.test.toolBrowserToolBrowser automation tool that runs the tests: selenium or playwright (pilot: local Chromium and Firefox only). An unknown tool stops the tests at startup. The Selenium driver (getDriver()) is only available with the selenium toolselenium
awe.test.video-formatVideoFormatTypeVideo format typewebm
awe.test.video-saveRecordingSaveTypeRecording save modefailed

Encoding property value​

There's a way to store encoded properties (such as passwords) in a properties file. You need to deploy the application, and enter into Settings -> Security access -> Encrypt util, fill the text criterion with the password and push the Encrypt button. The Encrypted property field is the value of the encoded password.

Almis

Once encoded, you just need to put it on any of your properties files and use it:

my.encoded.password=ENC(Pit1Q1bNt3uNQpZbldKbLg==)

ℹ️ The master key used to encode the properties is the awe.security.master-key property. It is required and has no default value: set it in your own application.properties file or in the environment.


⚠️ The Phrase key field on the Encrypt util screen allows you to generate the encoded properties with other passwords, but don't forget that the encoded properties with a phrase key and the awe.security.master-key must match to be decoded successfully.


Overwriting properties​

You can overwrite any property of awe framework by adding it to your application.properties file of the project.

Awe has the same reading properties order than Spring (1. Is the highest preference).

  1. Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
  2. @TestPropertySource annotations on your tests.
  3. @SpringBootTest#properties annotation attribute on your tests.
  4. Command line arguments.
  5. Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
  6. ServletConfig init parameters.
  7. ServletContext init parameters.
  8. JNDI attributes from java:comp/env.
  9. Java System properties (System.getProperties()).
  10. OS environment variables.
  11. A RandomValuePropertySource that only has properties in random.*.
  12. Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
  13. Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
  14. Application properties outside of your packaged jar (application.properties and YAML variants).
  15. Application properties packaged inside your jar (application.properties and YAML variants).
  16. @PropertySource annotations on your @Configuration classes.
  17. Default properties (specified using SpringApplication.setDefaultProperties).

Externalized configuration​

If you need load the configuration from one external file, you have to consider:

AWE like SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:

  1. A /config subdirectory of the current directory
  2. The current directory
  3. A classpath /config package
  4. The classpath root

Also, you can set spring.config.location environment property the run command.

java -jar myAweProject.jar --spring.config.location=file:/external_path/specific.properties

ℹ️ You can find more information about this in the Spring Boot reference documentation.