Configuration reference

This document describes all the parameters (set in config/config.json) that controls system behaviour.

Audience

System administrators.

NameDescriptionMandatoryDefault
addUserViaEmail.enabledEnable Add user via emailnofalse
addUserViaEmail.jwtExpireAfterExpires JWT after given period. The JWT is used when sending an e-mail to the signer which contains an URL to autologin to SWFno"P7D"
addUserViaEmail.jwtSigningCertificatePasswordPassword for addUserViaEmail.jwtSigningCertificatePathno""
addUserViaEmail.jwtSigningCertificatePathPath to a certificate to use for creating the JWTyes, if addUserViaEmail.enabled = true 
automationApiEnabledEnable the Automation API (boolean)nofalse
automationApiInterfaceListening interface for the Automation API (string)no"0.0.0.0"
automationApiPortListening port for the Automation API (int)no8081
credentials.passwordPassword for PKCS12 archive (string)yes, if password.privatePkcs12 is encrypted 
credentials.privatePkcs12PKCS12 archive for server certificate and private key (string)yes 
database.changelogPath to database changeset (string)yes"db_migrations/changelog.master.xml"
database.driver_classDatabase driver (string)yes"com.microsoft.sqlserver.jdbc.SQLServerDriver"
database.initial_pool_sizeInitial number of connections in connection pool (int)no3
database.max_idle_timeMaximum idle time for a connection in connection pool (0 means forever) (int)no0
database.max_pool_sizeMaximal number of connections in connection pool (int)no15
database.migrations_enabledEnable database changeset. Only change if you know what you are doing. (boolean)yestrue
database.min_pool_sizeMinimal number of connections in connection pool (int)no3
database.passwordDatabase  password (string)yes 
database.urlDatabase connection URL. E.g. "jdbc:sqlserver://localhost:1433;database=digo;encrypt=false" (string)yes 
database.userDatabase user (string)yes 
deleteOrdersJob.acceptedAgeLimitMax age for orders with status ACCEPTED. Value in ISO8601 (string)nodeleteOrdersJob.defaultAgeLimit
deleteOrdersJob.batchSizeNumber of orders to process att the same time (int)no100
deleteOrdersJob.cancelledAgeLimitMax age for orders with status CANCELLED. Value in ISO8601 (string)nodeleteOrdersJob.defaultAgeLimit
deleteOrdersJob.defaultAgeLimitDefault max age for an order before it is deleted. This value is overridden if a max age is set for a specific order status. E.g. acceptedAgeLimit. Value in ISO8601 (string). This value is also used for determining max age for errand due dates and. SWF will get the longest possible value for either defaulAgeLimit, pendingAgeLimit or totalAgeLimit (if set) and set to maximum due date time.no"P100Y"
deleteOrdersJob.delayDelay in  ISO-8601 before running first batch job or when to schedule with cron expression (string)no"PT0S"
deleteOrdersJob.enabledEnable or disable the entire delete orders job. (boolean)nofalse
deleteOrdersJob.expiredAgeLimitMax age for orders with status EXPIRED. Value in ISO8601 (string)nodeleteOrdersJob.defaultAgeLimit
deleteOrdersJob.failedAgeLimitMax age for orders with status FAILED. Value in ISO8601 (string)nodeleteOrdersJob.defaultAgeLimit
deleteOrdersJob.pendingAgeLimitMax age for orders with status PENDING. Value in ISO8601 (string)nodeleteOrdersJob.defaultAgeLimit
deleteOrdersJob.rejectedAgeLimitMax age for orders with status REJECTED. Value in ISO8601 (string)nodeleteOrdersJob.defaultAgeLimit
deleteOrdersJob.scheduleDelay between batch jobs in ISO-8601 or Cron expression (string)no"0 0 0,1,2,3,4,5 * * ?"
deleteOrdersJob.statusFilterComma-separated order status values;
ACCEPTED, CANCELLED, EXPIRED, FAILED, PENDING, REJECTED
no"REJECTED, CANCELLED, EXPIRED, FAILED"
deleteOrdersJob.totalAgeLimitMaximum total age of an errand, regardless of status. When set to null, errands will not have a maximum total age.nonull
descriptionLengthMaximum description length for an errand.
Keep this the same as the database limit as this will not change the database limit.
no2048
documentRetention.batchSizeNumber of documents to process att the same time (int)no100
documentRetention.completedDocumentAgeMax age of a completed (ACCEPTED, REJECTED, CANCELED, EXPIRED) document until it is deleted. Value in ISO8601 (string)no"P30D"
documentRetention.delayDelay in  ISO-8601 before running first batch job or when to schedule with cron expression (string)no"PT0S"
documentRetention.deleteFromDatabaseAlso delete document data from the database (boolean)nofalse
documentRetention.deleteFromDatabaseAgeLimitMax age of a document until its data is deleted from the database. Requires 'deleteFromDatabase' (string)no"P100Y"
documentRetention.enabledEnable or disable the entire document retention function. (boolean)notrue
documentRetention.inactiveDocumentAgeMax age of an inactive or finalized (REJECTED, CANCELED, EXPIRED) document until it is deleted.  Value in ISO8601 (string)no"PT12H"
documentRetention.scheduleDelay between batch jobs in ISO-8601 or Cron expression (string)no"0 0 2 * * ?"
documentRetention.unconsumedDocumentAgeMax age of an orphan document until it is deleted. Value in ISO8601 (string)no"PT12H"
emailValidation.enabledValidate email address that is entered into SWF.notrue
emailValidation.jmail.strictValidatorEnable strict validation when using Jmail
More info: https://github.com/RohanNagar/jmail?tab=readme-ov-file#additional-validation-rules
nofalse
emailValidation.regex.javaRegexJava regex to use when emailValidation.type is "regex"
Only used on backend.
yesSee config-sample.json in installation directory
emailValidation.regex.javaScriptRegexJavascript regex to use when validating in frontend.
The email will be validated again when it reaches the backend.
yesSee config-sample.json in installation directory
emailValidation.typeWhat type of validation to use in the backend.
Possible values are "jmail" and "regex".

More about jmail: https://github.com/RohanNagar/jmail

If you don't want to use jmail you can change to using a regular expression which is configured with emailValidation.regex.javaRegex

Frontend always uses regex because jmail is a backend validator.
yes"jmail"
expireOrdersJob.batchSizeNumber of documents to process att the same time (int)no100
expireOrdersJob.delayDelay in  ISO-8601 before running first batch job or when to schedule with cron expression (string)no"PT0S"
expireOrdersJob.enabledEnable or disable expiring orders job (boolean)notrue
expireOrdersJob.scheduleThe delay between batch jobs in ISO-8601 or Cron expression (string)no"0 0,30 * * * ?"
fileService.fileContentsLogMaxLengthThe length at which to truncate the message body containing the complete file contents of files received from PAS. If omitted, the entire file contents are logged.no 
fileService.passwordFile service user password (string)yes 
fileService.urlURL of File Service (string)yes 
fileService.usernameFile service user (string)yes 
logNetworkActivityEnable TCP logging for incoming HTTP requests (boolean)nofalse
logoutUrlBrowser redirects to this URL on logout (string)yes 
notifications.downloadLinkDirect download link for document in an email (boolean)notrue
orderDeletionReminderJob.enabledWhether or not the job is enabled. If the document retention job is disabled, the order deletion reminder job will be disabled as well (boolean)nofalse
orderDeletionReminderJob.delayThe delay of the job startup. Value in ISO-8601 (string)no"PT0S"
orderDeletionReminderJob.scheduleThe schedule of the job in ISO-8601 or Cron expression (string)no 
orderDeletionReminderJob.batchSizeThe size of the number of users that will receive an email for that job run. Read more here.no1000
orderDeletionReminderJob.timeBeforeDeletionHow long before the document retention job schedules a document deleting. Read more here.no"PT0S"
orderOptions.enableInviteUrlTargetOptionWhen enabled using true or false, solicitors get the option to set Invite URL target in the UI. Read more here.nofalse
orderOptions.enableNotifyAllSignersOptionWhen enabled, all signers will be notified when everyone in the errand signs the document. All signers will also be able to download the document (boolean)nofalse
orderOptions.defaultInviteUrlTargetSets the default value of the Invite URL target in the UI. Available options are SWF or SIGN_SERVICE. Read more here.no"SWF"
orderOptions.defaultSignerNotificationSet default value on whether or not all signers should be able to download the final document.nofalse
orderReminder.batchSizeOrder reminder batch size (int)no25
orderReminder.beforeExpirationSend a reminder number of days before the order expires. Value in ISO8601 (string)no"P2D"
orderReminder.delayDelay in  ISO-8601 before running first batch job or when to schedule with cron expression (string)no"PT15S"
orderReminder.enabledEnable reminder notifications (boolean)notrue
orderReminder.scheduleThe delay between batch jobs in ISO-8601 or Cron expression (string)no"PT35S"
primaryServerInterfaceListening interface for the web app API (string)no"0.0.0.0"
primaryServerPortListening port for the web app API (int)no8080
publicUrlPublic URL for the Signing Workflow service. E.g. https://swf.se:8080/ (string)yes 
saml.assertionConsumerServiceUrlSAML Assertion consumer URL (string)yes 
saml.attributes.authorityAuthority attribute (string)yes 
saml.attributes.firstNameFirst name attribute (string)yes 
saml.attributes.lastNameLast name attribute (string)yes 
saml.attributes.mailMail attribute (string)yes 
saml.attributes.sourceSource attribute (string)yes 
saml.defaultLocaleSAML locale. E.g. "sv" (string)yes 
saml.issuerIdSAML issuer ID (string)yes 
saml.postSsoUrlSAML IdP Request consumer URL (string)yes 
saml.roles.solicitorThis value for the digo_saml_authority attribute indicates Solicitor permissions (string)yes 
saml.skewTimeSAML skew time in milliseconds (int)no30000
saml.trustedCertificates.[]List of files containing trusted certificates for SAML ticket validation (array of strings)
E.g. "saml": { "trustedCertificates": [     "/path/saml.pem"    ] }
yes 
saml.trustedIssuers.[]List of trusted Issuers (Array of strings)
E.g. "saml": { "trustedIssuers": [     "stockholm"    ] }
yes 
sessionTimeoutSession timeout in milliseconds (int)no14400000 (4 hours)
signingOrders.allowLockedFilesMakes document validation allow locked files. Note that PAS may still not be able to process locked files in a later step. See PDF validation for more information.nofalse
signingOrders.allowAlreadySignedFilesMakes document validation allow already signed files. See PDF validation for more information.notrue
signingOrders.bodyLimitMax upload file size in bytes (int)no2097152 (2 MiB)
signingOrders.documentLocationIdFile storage ID. Change this to a unique value every time the File storage directory is changed (int)yes1
signingOrders.documentMimeTypeMime type header when downloading a signed document (string)no"application/octet-stream"
signingOrders.usePdfAFlavoursAllow these PDF/A flavours. See PDF/A validation (Array of strings)no[]
signingOrders.disableDocumentChecks (deprecated)Disables all document validations except the PDF flavour validation. See PDF validation for more information.nofalse
signingOrders.rejectInvalidPdfAReject invalid PDF/A file selections (boolean)nofalse
signingOrders.fileDirectoryPath to where to store signed documents (string)yes 
signingService.urlURL of Signing Service (string)yes 
smtp.client.hostnameSMTP hostname (string)yes (if smtp is enabled) 
smtp.client.keyStoreKey store file to trust server certificates (string)no 
smtp.client.keyStorePasswordPassword for key store file (string)yes, if keyStore is encrypted 
smtp.client.loginUse authentication on the SMTP service
(String: DISABLED, NONE, REQUIRED)
no"REQUIRED"
smtp.client.passwordSMTP Password (string)yes (if smtp is enabled) 
smtp.client.portSMTP port (int)no587
smtp.client.sslUse TLS when connecting to mail server (boolean)notrue
smtp.client.starttlsUse StartTLS (String: DISABLED, OPTIONAL, REQUIRED)no"REQUIRED"
smtp.client.trustAllTrust all certificates when connecting to mail server (boolean)nofalse
smtp.client.usernameSMTP Username (string)yes (if smtp is enabled) 
smtp.enabledSMTP notifications enabled (boolean)nofalse
sourceCookie.cookieNameCookie nameno"swfSource"
sourceCookie.domainDomain for the cookie. Set to null to use server domainnonull
sourceCookie.enabledEnable source cookie. It is a cookie that contains the source value for the user.
The syntax for the value is; source=EXTERNAL
nofalse
sourceCookie.isHttpOnlySet http only cookienotrue
sourceCookie.isSecureSet secure cookie
Secure cookie can only be used with HTTPS
notrue
sourceCookie.maxAgeSet cookie expiration Duration in ISO-8601 (string).
Set null for creating a session cookie.
nonull
sourceCookie.pathSet cookie pathno"/"
sourceCookie.sameSiteSet same site. Possible values are; null, "none", "lax", "strict"nonull
tagsAdd custom tags that can be used to tag signing ordersno 
smtp.fromAddressNotification email from (string)yes (if smtp is enabled) 
users.externalUserAttributes.firstNameFirst name attribute in external user query result (string)yes 
users.externalUserAttributes.infoInfo attribute in external user query result (string)yes 
users.externalUserAttributes.lastNameLast name attribute in external user query result (string)yes 
users.externalUserAttributes.mailMail attribute in external user query result (string)yes 
users.externalUserAttributes.mobileMobile attribute in external user query result (string)yes 
users.externalUserLookupURL for external user lookup (string)yes 
users.internalUserAttributes.departmentDepartment attribute in internal user query result (string)yes 
users.internalUserAttributes.firstNameFirst name attribute in internal user query result (string)yes 
users.internalUserAttributes.lastNameLast name attribute in internal user query result (string)yes 
users.internalUserAttributes.mailMail attribute in internal user query result (string)yes 
users.internalUserAttributes.mobileMobile attribute in internal user query result (string)yes 
users.internalUserAttributes.organizationOrganization attribute in internal user query result (string)yes 
users.internalUserAttributes.userIdUser ID attribute in internal user query result (string)yes 
users.internalUserLookupURL for internal user lookup (string)yes 
users.internalUserSearchURL for internal user search  (string)yes 
users.sslKeyFilePath to private key for TLS authentication  (string)no 
users.sslKeyFileTypeKey file type (string)no"pkcs12"
users.sslKeyPasswordPassword for the private TLS key  (string)yes, if sslKeyFile is encrypted 
users.sslTrustFileCustom trust store  (string)no 
users.useSslUse TLS towards User Query Service (boolean)nofalse
users.useSslClientCertUse TLS Client Auth towards User Query Service (boolean)nofalse
users.useSslTrustAllTrust all TLS server certificates (boolean)nofalse
users.sslTrustFileTypeTrust store type  (string)no"pkcs12"
validateSignaturesService.basicAuth.basicAuthPasswordBasicAuth password when accessing PAS for signature validationno 
validateSignaturesService.basicAuth.basicAuthUsernameBasicAuth username when accessing PAS for signature validationno 
validateSignaturesService.basicAuth.enabledEnabled BasicAuth when accessing PAS for signature validationnofalse
validateSignaturesService.enabledEnable signature validation buttonnofalse
validateSignaturesService.urlURL for the validation endpoint in PAS. Note that this request is made from the application. Not the users browser.no 
webHook.connectionTimeoutTimeout for the http POST. Duration in ISO-8601 (string)no"PT30S"
webHook.enabledEnable webhooks (boolean)nofalse
webHook.endpointEndpoint for webhook (string)no 
webHook.keyExtra query parameter in endpoint URL (string)no 
webHook.secretSecret to create header signature  (string)no 
webHook.sslKeyFilePrivate key for TLS authentication, mandatory if using SSL (string)no 
webHook.sslKeyFileTypeContent type (string)no"pkcs12"
webHook.sslKeyPasswordPassword for the private TLS key (string)yes, if sslKeyFile is encrypted 
webHook.sslTrustFileCertificate file, mandatory (string)yes, if using client authentication  
webHook.sslTrustFileTypeContent type (string)no"pkcs12"
webHook.useSslClientCertUse TLS Client authentication toward webhook service (boolean)nofalse
webHook.useSslTrustAllTrust all TLS server certificates (boolean)notrue
allowMultipleFilesIf SWF should accept multiple files or notno 
allowAppendixesIf SWF should accept appendixes should not   
documentConversion.enabledIf document conversion should be enablednofalse
documentConversion.preferredFlavourWhat global flavour the conversion service should convert to. Could be overridden by implementation specific preferredFlavourno 
documentConversion.implementationAn array of the conversion implementations used. Will start with the first entry and use the rest as fallbackno 
documentConversion.implementationConfigurationsA JSON object containing implementation specific configurations where the key will be the name of the implementation. Configuration details depends on the implementation of choice.no 
completionNextTarget.enabledWhether or not the completionNextTarget functionality should be enabled or not.nofalse
completionNextTarget.allowedLogoutTargetPrefixcompletionNextTarget URL prefix regex. The specified nextTarget should match the URL target that errand creators sets. Read more about it in the PAS solution documentation.nonull
completionNextTarget.allowedLogoutTargetcompletionNextTarget URL regex. The specified nextTarget should match the URL target that errand creators sets. Read more about it in the PAS solution documentation.nonull
completionNextTarget.allowedLogoutTargetSuffixcompletionNextTarget URL suffix regex. The specified nextTarget should match the URL target that errand creators sets. Read more about it in the PAS solution documentation.nonull
completionNextTarget.configurationsLanding page configurations. Specified as an object. Read more about it here.no