Skip to content

Configuration

Akram El Assas edited this page Jul 14, 2025 · 19 revisions

Wexflow Configuration Guide

Wexflow works out of the box with zero configuration. However, if you want to customize settings, this page explains how to configure Wexflow server and its main configuration files.

Table of Contents

  1. Wexflow Server Configuration
    1. .NET 4.8
    2. .NET 9.0+
  2. Wexflow.xml Configuration File
    1. .NET 4.8
    2. .NET 9.0+
      1. Windows
      2. Linux
      3. macOS
  3. Admin Panel Configuration
    1. .NET 4.8
    2. .NET 9.0+

Wexflow Server Configuration

.NET 4.8

You can configure Wexflow Server from C:\Program Files\Wexflow\Wexflow.Server.exe.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <appSettings>
    <add key="WexflowSettingsFile" value="C:\Wexflow\Wexflow.xml"/>
    <!-- LogLevel: Debug | All | Severely | Minimum | None -->
    <add key="LogLevel" value="All"/>
    <add key="WexflowServicePort" value="8000"/>
    <add key="SuperAdminUsername" value="admin"/>
    <add key="EnableWorkflowsHotFolder" value="false"/>
    <add key="EnableRecordsHotFolder" value="true"/>
    <add key="EnableEmailNotifications" value="false"/>
    <add key="DateTimeFormat" value="dd-MM-yyyy HH:mm:ss"/>
    <add key="Smtp.Host" value="smtp.gmail.com"/>
    <add key="Smtp.Port" value="587"/>
    <add key="Smtp.EnableSsl" value="true"/>
    <add key="Smtp.User" value="user"/>
    <add key="Smtp.Password" value="password"/>
    <add key="Smtp.From" value="user"/>
    <add key="HTTPS" value="false"/>
    <add key="AdminFolder" value=".\Admin"/>
    <add key="ClientSettingsProvider.ServiceUri" value=""/>
  </appSettings>
  <log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <file value="Wexflow.log"/>
      <encoding value="utf-8"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %5level [%thread] - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="INFO"/>
      <appender-ref ref="RollingFile"/>
    </root>
  </log4net>
  ...
</configuration>

LogLevel options:

  • Debug: All logs and debug logs.
  • All: All logs without debug logs (Default).
  • Severely: Only last workflow log and error logs.
  • Minimum: Only last workflow log.
  • None: No logs.

.NET 9.0+

You can configure Wexflow Server from Wexflow.Server/appsettings.json:

{
  "WexflowSettingsFile": "C:\\Wexflow-netcore\\Wexflow.xml",
  "LogLevel": "All",
  "WexflowServicePort": 8000,
  "SuperAdminUsername": "admin",
  "EnableWorkflowsHotFolder": false,
  "EnableRecordsHotFolder": true,
  "EnableEmailNotifications": false,
  "DateTimeFormat": "dd-MM-yyyy HH:mm:ss", /* Date and time format in the backend. */
  "Smtp.Host": "smtp.gmail.com",
  "Smtp.Port": 587,
  "Smtp.EnableSsl": true,
  "Smtp.User": "user",
  "Smtp.Password": "password",
  "Smtp.From": "user",
  "AdminFolder": "..\\Admin",
  "HTTPS": false,
  "PfxFile": "C:\\Wexflow-netcore\\wexflow.pfx",
  "PfxPassword": "wexflow2018"
}

Wexflow.xml Configuration File

Wexflow.xml is the main configuration file of Wexflow server. Its path is configured from:

  • .NET 4.8 — in C:\Program Files\Wexflow\Wexflow.Server.exe.config
  • .NET 9.0+ — in Wexflow.Server/appsettings.json

.NET 4.8

Wexflow.xml is located in: C:\Wexflow\Wexflow.xml

Below is the configuration file Wexflow.xml for the .NET version:

<?xml version="1.0" encoding="UTF-8" ?>
<Wexflow>
  <Setting name="workflowsFolder" value="C:\Wexflow\Workflows" />
  <Setting name="recordsFolder" value="C:\Wexflow\Records" />
  <Setting name="recordsHotFolder" value="C:\Wexflow\Records\_HotFolder" />
  <Setting name="tempFolder" value="C:\Wexflow\Temp" />
  <Setting name="tasksFolder" value="C:\Wexflow\Tasks" />
  <Setting name="approvalFolder" value="C:\Wexflow\Approval" />
  <Setting name="xsd" value="C:\Wexflow\Workflow.xsd" />
  <Setting name="tasksNamesFile" value="C:\Wexflow\TasksNames.json" />
  <Setting name="tasksSettingsFile" value="C:\Wexflow\TasksSettings.json" />
  <Setting name="globalVariablesFile" value="C:\Wexflow\GlobalVariables.xml" />
  <!-- SQLite or MongoDB or SQLServer or PostgreSQL or MySQL or LiteDB -->
  <Setting name="dbType" value="SQLite" />
  <!-- SQLite -->
  <Setting name="connectionString" value="Data Source=C:\Wexflow\Database\Wexflow.sqlite;Version=3;" />
  <!-- MongoDB -->
  <!--<Setting name="connectionString" value="Database=wexflow;MongoUrl=mongodb://localhost:27017;EnabledSslProtocols=false;SslProtocols=None" />-->
  <!-- SQLServer -->
  <!--<Setting name="connectionString" value="Server=localhost;Trusted_Connection=True;Database=wexflow;" />-->
  <!-- PostgreSQL -->
  <!--<Setting name="connectionString" value="Server=127.0.0.1;User Id=postgres;Password=pwd;Database=wexflow;Port=5432" />-->
  <!-- MySQL -->
  <!--<Setting name="connectionString" value="Server=localhost;Database=wexflow;Uid=root;Pwd=pwd;Port=3306" />-->
  <!-- LiteDB -->
  <!--<Setting name="connectionString" value="Filename=C:\Wexflow\Database\Wexflow.db; Connection=direct" />-->
</Wexflow>

Wexflow ships with 6 persistence providers. You can choose from the following dbType options:

  • SQLite (Default)
  • MongoDB
  • SQLServer
  • PostgreSQL
  • MySQL
  • LiteDB

If you change the persistence provider, don't forget to update connectionString setting.

.NET 9.0+

Windows

For the .NET 9.0+ version on Windows, Wexflow.xml is located in: C:\Wexflow-netcore\Wexflow.xml

Below is the configuration file Wexflow.xml for the .NET 9.0+ version:

<?xml version="1.0" encoding="UTF-8" ?>
<Wexflow>
  <Setting name="workflowsFolder" value="C:\Wexflow-netcore\Workflows" />
  <Setting name="recordsFolder" value="C:\Wexflow-netcore\Records" />
  <Setting name="recordsHotFolder" value="C:\Wexflow-netcore\Records\_HotFolder" />
  <Setting name="tempFolder" value="C:\Wexflow-netcore\Temp" />
  <Setting name="tasksFolder" value="C:\Wexflow-netcore\Tasks" />
  <Setting name="approvalFolder" value="C:\Wexflow-netcore\Approval" />
  <Setting name="xsd" value="C:\Wexflow-netcore\Workflow.xsd" />
  <Setting name="tasksNamesFile" value="C:\Wexflow-netcore\TasksNames.json" />
  <Setting name="tasksSettingsFile" value="C:\Wexflow-netcore\TasksSettings.json" />
  <Setting name="globalVariablesFile" value="C:\Wexflow-netcore\GlobalVariables.xml" />
  <!-- SQLite or MongoDB or SQLServer or PostgreSQL or MySQL or LiteDB -->
  <Setting name="dbType" value="SQLite" />
  <!-- SQLite -->
  <Setting name="connectionString" value="Data Source=C:\Wexflow-netcore\Database\Wexflow.sqlite;Version=3;" />
  <!-- MongoDB -->
  <!--<Setting name="connectionString" value="Database=wexflow_netcore;MongoUrl=mongodb://localhost:27017;EnabledSslProtocols=false;SslProtocols=None" />-->
  <!-- SQLServer -->
  <!--<Setting name="connectionString" value="Server=localhost;Trusted_Connection=True;Database=wexflow_netcore;" />-->
  <!-- PostgreSQL -->
  <!--<Setting name="connectionString" value="Server=127.0.0.1;User Id=postgres;Password=pwd;Database=wexflow_netcore;Port=5432" />-->
  <!-- MySQL -->
  <!--<Setting name="connectionString" value="Server=localhost;Database=wexflow_netcore;Uid=root;Pwd=pwd;Port=3306" />-->
  <!-- LiteDB -->
  <!--<Setting name="connectionString" value="Filename=C:\Wexflow-netcore\Database\Wexflow.db; Connection=direct" />-->
</Wexflow>

Linux

For the .NET 9.0+ version on Linux, Wexflow.xml is located in: /opt/wexflow/Wexflow/Wexflow.xml

Below is the configuration file Wexflow.xml for the .NET 9.0+ version:

<?xml version="1.0" encoding="UTF-8" ?>
<Wexflow>
  <Setting name="workflowsFolder" value="/opt/wexflow/Wexflow/Workflows" />
  <Setting name="recordsFolder" value="/opt/wexflow/Wexflow/Records" />
  <Setting name="recordsHotFolder" value="/opt/wexflow/Wexflow/Records/_HotFolder" />
  <Setting name="tempFolder" value="/opt/wexflow/Wexflow/Temp" />
  <Setting name="tasksFolder" value="/opt/wexflow/Wexflow/Tasks" />
  <Setting name="approvalFolder" value="/opt/wexflow/Wexflow/Approval" />
  <Setting name="xsd" value="/opt/wexflow/Wexflow/Workflow.xsd" />
  <Setting name="tasksNamesFile" value="/opt/wexflow/Wexflow/TasksNames.json" />
  <Setting name="tasksSettingsFile" value="/opt/wexflow/Wexflow/TasksSettings.json" />
  <Setting name="globalVariablesFile" value="/opt/wexflow/Wexflow/GlobalVariables.xml" />
  <!-- SQLite or MongoDB or SQLServer or PostgreSQL or MySQL or LiteDB or Oracle -->
  <Setting name="dbType" value="SQLite" />
  <!-- SQLite -->
  <Setting name="connectionString" value="Data Source=/opt/wexflow/Wexflow/Database/Wexflow.sqlite;Version=3;" />
  <!-- MongoDB -->
  <!--<Setting name="connectionString" value="Database=wexflow_netcore;MongoUrl=mongodb://localhost:27017;EnabledSslProtocols=false;SslProtocols=None" />-->
  <!-- SQLServer -->
  <!--<Setting name="connectionString" value="Server=localhost;Trusted_Connection=True;Database=wexflow_netcore;" />-->
  <!-- PostgreSQL -->
  <!--<Setting name="connectionString" value="Server=127.0.0.1;User Id=postgres;Password=pwd;Database=wexflow_netcore;Port=5432" />-->
  <!-- MySQL -->
  <!--<Setting name="connectionString" value="Server=localhost;Database=wexflow_netcore;Uid=root;Pwd=pwd;Port=3306" />-->
  <!-- LiteDB -->
  <!--<Setting name="connectionString" value="Filename=/opt/wexflow/Wexflow/Database/Wexflow.db; Connection=direct" />-->
  <!-- Oracle -->
  <!--<Setting name="connectionString" value="Data Source=localhost:1521/wexflownetcore;User Id=SYSTEM;Password=pwd;" />-->
</Wexflow>

macOS

For the .NET 9.0+ version on Linux, Wexflow.xml is located in: /Applications/wexflow/Wexflow/Wexflow.xml

Below is the configuration file Wexflow.xml for the .NET 9.0+ version:

<?xml version="1.0" encoding="UTF-8" ?>
<Wexflow>
  <Setting name="workflowsFolder" value="/Applications/wexflow/Wexflow/Workflows" />
  <Setting name="recordsFolder" value="/Applications/wexflow/Wexflow/Records" />
  <Setting name="recordsHotFolder" value="/Applications/wexflow/Wexflow/Records/_HotFolder" />
  <Setting name="tempFolder" value="/Applications/wexflow/Wexflow/Temp" />
  <Setting name="tasksFolder" value="/Applications/wexflow/Wexflow/Tasks" />
  <Setting name="approvalFolder" value="/Applications/wexflow/Wexflow/Approval" />
  <Setting name="xsd" value="/Applications/wexflow/Wexflow/Workflow.xsd" />
  <Setting name="tasksNamesFile" value="/Applications/wexflow/Wexflow/TasksNames.json" />
  <Setting name="tasksSettingsFile" value="/Applications/wexflow/Wexflow/TasksSettings.json" />
  <Setting name="globalVariablesFile" value="/Applications/wexflow/Wexflow/GlobalVariables.xml" />
  <!-- SQLite or MongoDB or SQLServer or PostgreSQL or MySQL or LiteDB -->
  <Setting name="dbType" value="SQLite" />
  <!-- SQLite -->
  <Setting name="connectionString" value="Data Source=/Applications/wexflow/Wexflow/Database/Wexflow.sqlite;Version=3;" />
  <!-- MongoDB -->
  <!--<Setting name="connectionString" value="Database=wexflow_netcore;MongoUrl=mongodb://localhost:27017;EnabledSslProtocols=false;SslProtocols=None" />-->
  <!-- SQLServer -->
  <!--<Setting name="connectionString" value="Server=localhost;Trusted_Connection=True;Database=wexflow_netcore;" />-->
  <!-- PostgreSQL -->
  <!--<Setting name="connectionString" value="Server=127.0.0.1;User Id=postgres;Password=pwd;Database=wexflow_netcore;Port=5432" />-->
  <!-- MySQL -->
  <!--<Setting name="connectionString" value="Server=localhost;Database=wexflow_netcore;Uid=root;Pwd=pwd;Port=3306" />-->
  <!-- LiteDB -->
  <!--<Setting name="connectionString" value="Filename=/Applications/wexflow/Wexflow/Database/Wexflow.db; Connection=direct" />-->
</Wexflow>

Admin Panel Configuration

It is possible to format date and time in the backend through DateTimeFormat setting option. The date is local and can be formatted however you want. The default format is dd-MM-yyyy HH:mm:ss.

If you modify this setting, you must restart the Wexflow server to apply changes.

.NET 4.8

To change the setting option DateTimeFormat simply open the settings file C:\Program Files\Wexflow\Wexflow.Server.exe.config and edit the setting option.

.NET 9.0+

To change the setting option DateTimeFormat simply open the settings file Wexflow.Server/appsettings.json and edit the setting option.

  1. Install Guide
  2. HTTPS/SSL
  3. Screenshots
  4. Docker
  5. Configuration Guide
    1. Wexflow Server
    2. Wexflow.xml
    3. Admin Panel
    4. Authentication
  6. Persistence Providers
  7. Getting Started
  8. Android App
  9. Local Variables
  10. Global Variables
  11. REST Variables
  12. Functions
  13. Cron Scheduling
  14. Command Line Interface (CLI)
  15. REST API Reference
    1. Introduction
    2. JWT Authentication
    3. Sample Clients
      1. C# Client
      2. JavaScript Client
      3. PHP Client
      4. Python Client
      5. Go Client
      6. Rust Client
      7. Ruby Client
      8. Java Client
      9. C++ Client
    4. Security Considerations
    5. Swagger
    6. Workflow Notifications via SSE
      1. C# SSE Client
      2. JavaScript SSE Client
      3. PHP SSE Client
      4. Python SSE Client
      5. Go SSE Client
      6. Rust SSE Client
      7. Ruby SSE Client
      8. Java SSE Client
      9. C++ SSE Client
    7. Endpoints
  16. Samples
    1. Sequential workflows
    2. Execution graph
    3. Flowchart workflows
      1. If
      2. While
      3. Switch
    4. Approval workflows
      1. Simple approval workflow
      2. OnRejected workflow event
      3. YouTube approval workflow
      4. Form submission approval workflow
    5. Workflow events
  17. Logging
  18. Custom Tasks
    1. Introduction
    2. General
      1. Creating a Custom Task
      2. Wexflow Task Class Example
      3. Task Status
      4. Settings
      5. Loading Files
      6. Loading Entities
      7. Need A Starting Point?
    3. Installing Your Custom Task in Wexflow
      1. .NET Framework 4.8 (Legacy Version)
      2. .NET 8.0+ (Stable Version)
      3. Referenced Assemblies
      4. Updating a Custom Task
      5. Using Your Custom Task
    4. Suspend/Resume
    5. Logging
    6. Files
    7. Entities
    8. Shared Memory
    9. Designer Integration
      1. Registering the Task
      2. Adding Settings
    10. How to Debug a Custom Task?
  19. Built-in Tasks
    1. File system tasks
    2. Encryption tasks
    3. Compression tasks
    4. Iso tasks
    5. Speech tasks
    6. Hashing tasks
    7. Process tasks
    8. Network tasks
    9. XML tasks
    10. SQL tasks
    11. WMI tasks
    12. Image tasks
    13. Audio and video tasks
    14. Email tasks
    15. Workflow tasks
    16. Social media tasks
    17. Waitable tasks
    18. Reporting tasks
    19. Web tasks
    20. Script tasks
    21. JSON and YAML tasks
    22. Entities tasks
    23. Flowchart tasks
    24. Approval tasks
    25. Notification tasks
    26. SMS tasks
  20. Run from Source
  21. Fork, Customize, and Sync
Clone this wiki locally