Installing Smart Flows Server On Premise

To download the server component (a zip file), you will need a Freshdesk account. You can request access through our Client and Support Operations team, or you will get it after purchasing the license. In Freshdesk, go to 'Knowledge base' -> Experlogix Smart Flows -> Smart Flows Downloads. Here is a direct link: https://support.experlogix.com/en/support/solutions/articles/12000098262-smart-flows-downloads. The two most popular methods of installing Smart Flows are: 

  • The traditional install that installs Smart Flows on your computer

  • Using containers, such as Docker Desktop, which allows you to install Smart Flows in a container environment

We recommend using the AdoptOpenJDK 21 LTS build using the Hotspot VM, select here to download.
Please contact Experlogix Support if you need help in updating Java.

Install Smart Flows Using Traditional Method

Download the ZIP file. In File Explorer, Right-click the ZIP file. Then go to Properties. In the General tab, if there is a message here that says 'This file came from another computer and might be blocked to help protect this computer', then check 'Unblock' and press 'OK'.

Extract Server Installation Files

1. Unpack the ZIP file in the installation folder (C:\Xpertdoc-SmartFlows\).
The name of the folder should reflect the intended role such as: project-test, project-prod… e.g. resulting in “C:\Xpertdoc-SmartFlows\project-prod”.
2. Rename the folder to be meaningful.

Create the application.properties file

In the example below, the saved location is project-prod.

1. In the project folder, create a blank text file and save it with the name application.properties.

After upgrading or installing Smart Flows to version 4.24.0 or higher, the JDBC Driver will be on version JDBC Driver 12.6. This causes some changes in how you configure the JDBC properties in the application.properties file compared to previous versions:

  • trustServerCertificate=true is now optional and should only be used when a trusted certificate is unavailable.

  • Use encrypt=true whenever possible to ensure secure connections.

Copy
Example JDBC connection string
project.datasource.jdbc-url=jdbc:sqlserver://PRD-V-SQL-DB02;database=XprtDoc;encrypt=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;lockTimeout=5000;socketTimeout=300000
Copy
Where users will be accessing Smart Flows
server.port=443 
project.baseurl=https://xsfl-server:443
Copy
SSL certificate details
server.ssl.key-store=../yourpfxfile.pfx 
server.ssl.key-store-password=yourpfxpassword 
server.ssl.key-store-type=pkcs12

trustServerCertificate=false; should not be included unless the environment requires it.

  • New driver versions do not require this setting unless using self-signed or untrusted certificates.

  • If trustServerCertificate is still needed, it should be explicitly added (trustServerCertificate=true), but only if a trusted certificate is unavailable.

  • project.datasource.jdbc-url=jdbc:sqlserver://PRD-V-SQL-DB02;database=XprtDoc;encrypt=true;trustServerCertificate=false;
Copy
Where the database is
project.datasource.jdbc-url=jdbc:sqlserver://PRD-V-SQL-DB02;database=XprtDoc;encrypt=true;trustServerCertificate=false;
hostNameInCertificate=*.database.windows.net;loginTimeout=30;lockTimeout=5000;socketTimeout=300000
project.datasource.username=sa 
project.datasource.password=secretsapassword
Copy
Password that will be used as the admin password
sample.user.password=secretadminpassword 
# Uncomment when using HTTP instead of HTTPS: 
# cookie.secure=false
Prerequisite

TLS Certificate SetupThe use of TLS encryption is required for the Smart Flows system to function. To enable TLS encryption, you need a TLS Certificate that matches your FQDN.If you install multiple projects on one server, you can also use a wildcard certificateClosed a digital certificate that is applied to a domain and all its subdomains. Wildcard notation consists of an asterisk and a period before the domain name. Secure Sockets Layer (SSL) certificates often use wildcards to extend SSL encryption to subdomains. for the CN . For example *.base.domain.com with *base.domain.com and base.domain.com as alternative names. The "*base" component of the address serves as a "fill in the blank" to properly direct to all versions of the address that end in ".domain.com"SSL Certificate Format GuidelinesThe recommended format is PFXClosed PKCS #12 defines an archive file format for storing many cryptography objects as a single file. It is commonly used to bundle a private key with its X.509 certificate or to bundle all the members of a chain of trust.The Certificate must be validYou must have the PFX password availableStore the PFX file inside the installation folder (e.g. C:\Experlogix-Smart Flows).

2. Update the following parameters according to your setup.

#the address of your Smart FlowsXSFClosed Flavour in Licensing is related to connectors. For Smart Flows you have the following connector options under Flavour section: Microsoft Dynamic 365 CE, Mocrosoft Dynamic 365 F&O, Salesforce, and Sugar server as seen by the end-user (include port number if not using default port).

project.baseurl=http://exampleurl.be

#Location of the PFX file

server.ssl.key-store=examplepfx.pfx

#Password of the PFX file

server.ssl.key-store-password=enteryourpasswordhere

#Do not change, use this value

server.ssl.key-store-type=pkcs12

#Example JDBC URL

project.datasource.jdbc-url=jdbc:sqlserver://PRD-V-SQL-DB02;database=XprtDoc;encrypt=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;lockTimeout=5000;socketTimeout=300000

#Username of the database user

project.datasource.username=myusername

#Password of the database user

project.datasource.password=mypassword

#Choose a password for your first login with the native admin user (It will be changed at the initial project setup)

sample.user.password=secretadminpassword

Configure JWT Token Settings

For on-premise clients, we recommend adding the following so that users are not logged out whenever the server restarts. Use table below for guidance on creating and setting the JWT tokens.

Configuration screen showing JWT token settings in Smart Flows

 

Property

Description

Required

Value

jwt.secret

The secret is used when signing and validating JWTs provided by Smart Flows.

No, but highly recommended). When not used, a random secret will be generated on startup.

Randomly chosen

Example: 1e38b0lMFqccDuOA

The jwt.secret and cookie.salt values must be manually created. Do not use the example values from the table, they are provided only for illustrative purposes. Generate unique, long, random strings to secure your installation properly.

jwt.expiration

The duration in seconds for which a JWT is valid.

No 86400 (= 24 hours)

cookie.salt

The value is used to encode cookie stamp. If not set, it will get generated on startup. This means all user sessions will be invalid on restart of the server.

No

Randomly chosen*

Example:

797204

The jwt.secret and cookie.salt values must be manually created. Do not use the example values from the table, they are provided only for illustrative purposes. Generate unique, long, random strings to secure your installation properly.

For on-premise installation, the following list of properties can be added to the application.properties file.

(Optional) Setup Docusign Connector

If you want to configure Docusign, you need to make changes to the application.properties file. Refer to Docusign (E-sign) connector set up for more details.

Create the Smart Flows service

Create the Smart Flows service. Open the command prompt as Administrator. Go into the installation folder via the cd command.

Run this command to create the Smart Flows service:

C:\...>smartflows-server install

You should see no error message:

 

The service has been created. You can start and stop Smart Flows here:

 

Update smartflows-server.xml Configuration

The file can be found in the project folder. Update the content of the file to reflect role of the server.

Copy
<service>    
    <id>smartflows-server</id>    
    <name>Xpertdoc Smart Flows Server</name>    
    <description>Xpertdoc Smart Flows Server</description>    
    ...    
</service>

To differentiate multiple Smart Flows servers on the same machine, change the service parameters as follows:

1. Rename the service id from ‘smartflows-server’ to ‘smartflows-prod’.
2. Rename the service name to ‘Xpertdoc Smart Flows Prod’.

Install Smart Flows using Docker

If you prefer containerized deployment, you can use Docker to install Smart Flows in a more modular and scalable environment. This section walks through editing Docker files and executing Docker build commands.

Prerequisites:

Docker for Windows, Notepad ++

1. Download the Docker zip file and extract. All properties normally in the application.properties file must now be listed in the Dockerfile.
2. Using Notepad ++, edit the Docker file. Use capital letters and underscore instead of period.

You must use capital letters and underscores instead of periods for Docker to read the file.

Dockerfile opened in Notepad++, illustrating how properties should be formatted.

3. Unzip the server component zip file and place the unzipped files with the Docker files.
4. From the command line go to your current location and type:

Ensure your Smart Flows server version matches your actual server version.

Copy
Example Docker Build Command for 4.19 Release of Smart Flows
docker build . --build-arg JAR_FILE=smartflows-server-4.19.1.2.jar -t smartflows:4.19.1.2
5. From the Docker Desktop, select the Run button.

Smart Flows opens in the Docker container.

Docker Desktop showing the running Smart Flows container