# Compare Workflow Engine products for .NET

Source: https://workflowengine.io/products/compare/
Site index for agents: https://workflowengine.io/llms.txt (products, licensing, documentation hosts, package names).
Last checked against the product documentation: 2026-09-15.
No prices here. Public pricing for Workflow Engine and Workflow Engine NEO is at https://workflowengine.io/pricing/; Workflow Server, Workflow Engine NEO Enterprise and Workflow Server Custom are quoted individually.

Optimajet ships four workflow products. Workflow Engine has Team and Complete editions, while Workflow Engine NEO has Subscription, Business, SaaS and Enterprise editions. Workflow Engine Free, formerly Community Edition, is the free tier of the .NET library, with documented usage limits. Workflow Engine is the commercial .NET library you embed in your app and call from C#. Workflow Engine NEO adds a ready HTTP API (Data API and RPC API) with full multitenancy. Workflow Server is a standalone service in Docker with its own HTTP API for any stack.

## How to read the matrix

The four value columns are always in this order: Workflow Engine Free, Workflow Engine, Workflow Engine NEO, Workflow Server. A cell says **Yes** when the capability is included, **No** when it is not available, and **Limited**, followed by the reservation, when it works within a documented boundary, such as automatic migration covering the SQL providers only. The small print after a row name is the boundary that row carries; where the row name is a link, it points at the page that documents the capability.

## Feature matrix

### Overview

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **Type** | Embedded | Embedded | Embedded | Standalone |
| **Best for** | Workflow Engine Free is for personal, non-commercial evaluation, learning, research, and small non-commercial projects. Use a trial key to evaluate licensed features for a commercial proof of concept. | Workflow Engine Team and Complete are perpetual editions for internal commercial .NET applications. Public SaaS requires the corresponding edition of Workflow Engine NEO; OEM distribution requires Workflow Engine NEO Enterprise. No royalty or per-execution fee applies within the licensed use. Included support depends on the edition: Team is self-service, while Complete includes two months of direct support. Annual SLA-backed support plans are available separately. | For teams whose workflows are part of the product: a ready HTTP API means a web, mobile or service client drives processes without you building an integration layer, and full multitenancy serves many customers from one deployment. Workflow Engine NEO is a separate product based on Workflow Engine, and existing schemes carry over. | When the stack is not .NET, or you would rather run a workflow service than embed one. A Docker image with its own HTTP API, admin panel, users and roles: an operations team gets a product to run instead of a library to integrate. |
| **What it is** | Free .NET library (NuGet) | .NET library (NuGet) | .NET library + licensed HTTP API | Standalone Docker service |
| **Runs in** | Your .NET app | Your .NET app | Your .NET app | Its own Docker container |
| **How your app calls it** | From C# code | From C# code | From C# code or over HTTP | Over HTTP, from any language |
| **[Native ASP.NET integration](https://docs.workflowengine.io/get-started/install-workflow-engine/).** The .NET products register in your host and run in your process. Workflow Server runs as its own service, so an ASP.NET app talks to it over HTTP instead of hosting it. | Yes | Yes | Yes | No |
| **Core runtime compatibility.** WorkflowEngine.NETCore-Core targets netstandard2.0. The range shown here describes Core binary compatibility, not current vendor support or every provider, plugin and HTTP API package. The current support policy lists .NET 8, .NET 10 and .NET Framework 4.6.2. | .NET Framework 4.6.2 through .NET 10 | .NET Framework 4.6.2 through .NET 10 | .NET Framework 4.6.2 through .NET 10 | Not embedded in your app |
| **[Package-specific targets](https://docs.workflowengine.io/roadmap/).** The Oracle provider targets netstandard2.1 and does not run on .NET Framework. SQLite, Real-Time Tracking and every Workflow Engine HTTP API package target net8.0 and net10.0. These are package targets, not license boundaries. Workflow Server runs separately: clients call it over HTTP, its Docker image includes the runtime, and a non-Docker deployment requires the server target shown here. | Oracle: .NET Core 3.0 through .NET 10; SQLite / Real-Time Tracking / HTTP API: .NET 8 and .NET 10 | Oracle: .NET Core 3.0 through .NET 10; SQLite / Real-Time Tracking / HTTP API: .NET 8 and .NET 10 | Oracle: .NET Core 3.0 through .NET 10; SQLite / Real-Time Tracking / HTTP API: .NET 8 and .NET 10 | Client app: No .NET required; Server: .NET 8 |

### Execution

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Durable execution](https://docs.workflowengine.io/evaluate/workflow-engine-features/durable-execution/).** Confirmed progress is stored in the database. An idled process continues from its last persisted checkpoint; an Action interrupted while Running follows the configured recovery policy and is not resumed from the exact instruction. | Yes | Yes | Yes | Yes |
| **Long-running processes, suspend and resume.** A process can wait days or months on a person or a timer without holding a thread. | Yes | Yes | Yes | Yes |
| **Human-in-the-loop approvals.** The Approval Plugin ships with the engine, alongside the Loops Plugin and the File Plugin. | Yes | Yes | Yes | Yes |
| **Task inbox.** The Approval Plugin stores each identity ID with its pending commands in the inbox, records approval history, and provides outbox queries. Embedded applications resolve IDs through their own identity system. Register ApprovalPlugin with runtime.WithPlugin(...); NEO also exposes inbox entries through the Search API. | Yes | Yes | Yes, and over HTTP | Yes |
| **[Parallel branches, timers, sub-processes](https://docs.workflowengine.io/evaluate/workflow-engine-features/timers-scheduling/).** Subprocesses form a managed tree: parameters pass down, the parent keeps control, and child states and commands are visible from it. | Yes | Yes | Yes | Yes |
| **[Work calendars for timers](https://docs.workflowengine.io/evaluate/workflow-engine-features/work-calendar/).** A timer can count in working time. You configure the weekly schedule and override holidays and one-off workdays, so "three days to approve" does not expire over a weekend. | Yes | Yes | Yes | Yes |
| **[Pre-execution (simulation)](https://docs.workflowengine.io/evaluate/workflow-engine-features/pre-execution-simulation/).** Evaluates where a command would take the process, without touching the persisted state. Use it to show a user what happens before they click. | Yes | Yes | Yes | Yes |

### Designer & modeling

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Visual Workflow Designer](https://workflowengine.io/features/workflow-designer/).** The drag-and-drop Visual Workflow Designer. The .NET products embed it in your own interface; Workflow Server carries it inside its admin panel. | In your own UI | In your own UI | In your own UI | In its admin panel |
| **[BPMN 2.0 import plugin](https://workflowengine.io/features/bpmn/).** A licensed plugin everywhere, never part of the core. Not available on Workflow Engine Free. Priced as an add-on for both Workflow Engine editions and for Workflow Engine NEO Subscription and Business; included with Workflow Engine NEO SaaS and Enterprise. On Workflow Server it is one of the plugins you switch on, under that product’s own license. | No | Add-on plugin | Subscription and Business: Add-on plugin; SaaS and Enterprise: Included plugin | Bundled plugin |
| **Visual Workflow Designer embedding.** Embed the Visual Workflow Designer into your app. Use the same component with React, Angular, vanilla JavaScript, or Blazor via IJSRuntime interop. | React, Angular, Blazor, JS | React, Angular, Blazor, JS | React, Angular, Blazor, JS | Built into its panel |
| **[Build workflows in code and edit them visually](https://docs.workflowengine.io/evaluate/workflow-engine-features/workflow-as-code/).** You can save a ProcessDefinition built in code and open it in the Designer. You can also wrap an existing ProcessDefinition and modify it in code. Visual edits do not regenerate fluent C# source. | Yes | Yes | Yes | Yes |
| **Simple Process Notation by Optimajet.** Optimajet’s own notation: a compact text description of a process, for the cases where BPMN’s fifty-odd element types are the barrier rather than the tool. BPMN stays available for the diagrams that come from outside. | Yes | Yes | Yes | Yes |
| **[Visual Workflow Designer customization](https://docs.workflowengine.io/evaluate/workflow-engine-features/customization/).** Color themes, which activity types are visible, toolbar buttons, property-panel controls and autocomplete providers. You can hide activity types, restrict commands and actions, and replace the default controls. This is the API of the embedded designer; on Workflow Server the designer is part of its own panel. | Yes | Yes | Yes | Its own panel |
| **[Interactive Designer (live process state)](https://docs.workflowengine.io/evaluate/workflow-engine-features/interactive-designer/).** The Real-Time Tracking plugin pushes state changes into the designer as they happen, so a running process is watched rather than polled. | Yes | Yes | Yes | Yes |
| **[Workflow templates (scheme inlining)](https://docs.workflowengine.io/evaluate/workflow-engine-features/workflow-templates/).** An Inline activity is replaced at build time with a shared fragment, so an approval step, an escalation path or a review gate is defined once and reused instead of redrawn in every scheme. | Yes | Yes | Yes | Yes |
| **[Scheme versioning](https://docs.workflowengine.io/evaluate/workflow-engine-features/process-versioning/).** Saving a scheme creates a new version. New processes use the latest version; existing processes keep their current version by default and can move to a newer version explicitly or through configured lazy migration. | Yes | Yes | Yes | Yes |

### Localization and internationalization

Localization (l10n) is the process text your users read; internationalization (i18n) is the interface around it.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **Process localization (l10n).** Commands, states, parameters, actions, conditions, schemes and comments carry per-culture translations, stored with the scheme or supplied by your own localization provider. A lookup falls back from the requested culture to the default entry, then to the internal name. | Yes | Yes | Yes | Yes |
| **[Visual Workflow Designer UI languages](https://workflowengine.io/features/workflow-designer/).** Eight ship in the package. Users switch language from the designer menu, and you can add your own. | English, German, Spanish, French, Italian, Portuguese, Turkish, Arabic, plus your own | English, German, Spanish, French, Italian, Portuguese, Turkish, Arabic, plus your own | English, German, Spanish, French, Italian, Portuguese, Turkish, Arabic, plus your own | English, German, Spanish, French, Italian, Portuguese, Turkish, Arabic, plus your own |
| **[Right-to-left (RTL) layout](https://workflowengine.io/features/workflow-designer/).** Supported through the bidi setting, Arabic included. The canvas mirrors, rather than keeping a left-to-right layout with translated labels. | Yes | Yes | Yes | Yes |
| **[Your own language pack](https://workflowengine.io/features/workflow-designer/).** Add a language by cloning the English JSON locale file and editing it. No build of ours is involved. | Yes | Yes | Yes | Yes |
| **Admin console languages.** The .NET products have no interface of their own: the application around them is yours, so its language is yours to set. Workflow Server ships its own panel translated. | Your app decides | Your app decides | Your app decides | English, French, German, Italian, Portuguese, Spanish, Turkish |

### Where your own code plugs in

One interface per row. You write a class, register the plugin, and the runtime finds it.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[How your code is called](https://workflowengine.io/features/plugin-system/).** You implement an interface and register it on WorkflowRuntime at startup. The runtime calls an action when a transition fires, a rule during command discovery or when command execution explicitly checks transition restrictions, and a condition when it selects a branch. Nothing to host, poll, or subscribe to. Workflow Server reaches your code over HTTP through GetActions, ExecuteAction, and RuleCheck, or loads the implementations from a server plugin assembly. | Registered on WorkflowRuntime | Registered on WorkflowRuntime | Registered on WorkflowRuntime | Callback API, or a server plugin |
| **[Actions for activities and conditions for transitions](https://docs.workflowengine.io/get-started/concepts/action/).** [`IWorkflowActionProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IWorkflowActionProvider/) Provides workflow actions and conditions from runtime definitions. Write the method once and a business user gets it as a step they can place anywhere, and registering the plugin is enough for the runtime to find it. | Yes | Yes | Yes | In a server plugin |
| **[Rules for command authorization](https://docs.workflowengine.io/get-started/concepts/rule/).** [`IWorkflowRuleProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IWorkflowRuleProvider/) Defines named rules that evaluate workflow participant identities against transition restrictions. Rules filter command discovery, and the provider can also return matching identities for task lists. The same restrictions can be checked again during command execution. Authentication and endpoint authorization remain the host application's responsibility. | Yes | Yes | Yes | In a server plugin |
| **[Custom activity types (gateways, events, tasks)](https://docs.workflowengine.io/get-started/concepts/activity/).** [`ICustomActivityProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/ICustomActivityProvider/) Provides custom workflow activities to the runtime. Your own types appear in the designer palette with their own template, form and parameter editors, so someone who does not write code can place your domain operations themselves. | Yes | Yes | Yes | In a server plugin |
| **[Custom condition types](https://docs.workflowengine.io/get-started/concepts/condition/).** [`ICustomConditionProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.CustomWorkflowProviders/ICustomConditionProvider/) Provides custom conditions that can be used to evaluate workflow transitions at runtime. Branching then follows the rule your domain already has rather than an expression that restates it and drifts, and your types sit beside the built-in expression and code conditions. | Yes | Yes | Yes | In a server plugin |
| **[Parameter UI definitions for the Visual Workflow Designer](https://docs.workflowengine.io/evaluate/workflow-engine-features/workflow-designer/).** [`IDesignerParameterFormatProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IDesignerParameterFormatProvider/) Supplies the Workflow Designer with metadata used to build structured editors for the parameters of named workflow actions, conditions, and rules. The person filling a parameter gets a control that fits the value, a date picker or a lookup rather than a free text box, which is where wrong entries stop. | Yes | Yes | Yes | In a server plugin |
| **[Autocomplete suggestions in the Visual Workflow Designer](https://docs.workflowengine.io/evaluate/workflow-engine-features/workflow-designer/).** [`IDesignerAutocompleteProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IDesignerAutocompleteProvider/) Provides autocomplete suggestions for design-time inputs shown in the Workflow Designer UI. Your own names complete themselves in the field where they are being typed, which means fewer typos and less hunting through documentation when someone writes a code action. | Yes | Yes | Yes | In a server plugin |
| **[Read and write external parameters](https://docs.workflowengine.io/get-started/concepts/parameter/).** [`IWorkflowExternalParametersProvider`](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Runtime/IWorkflowExternalParametersProvider/) Provides access to workflow external parameters for a specific process instance. The engine reads and writes each named parameter in the system that holds it, so no copy lands in the workflow database and an order total in the ERP or a credit limit in the CRM keeps one value and one owner. | Yes | Yes | Yes | In a server plugin |

### Plugins that ship

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **Approval, Loops and File Plugins.** Shipped with the engine. The Approval Plugin is the one behind the human-in-the-loop row above. | Yes | Yes | Yes | Yes |
| **[Forms Plugin (binds to Form Engine)](https://docs.workflowengine.io/evaluate/workflow-engine-features/attachable-forms/).** The Forms Plugin is included in every edition of Workflow Engine NEO and available as an add-on for the Workflow Engine Complete edition. Form Engine Core renders forms under the MIT license. The Form Engine Enterprise license covers Form Engine Designer and the other features of that edition. It is priced separately for Workflow Engine NEO Subscription, Business, and SaaS; Workflow Engine NEO Enterprise includes it with OEM rights. | No | Team: Not available; Complete: Add-on | Yes | No |
| **[Your own plugins](https://docs.workflowengine.io/evaluate/workflow-engine-features/plugin-system/).** A plugin is a class you register once, and the runtime detects the provider interfaces it implements. Your actions, conditions and rules then travel with it, in the same shape the shipped plugins use. | Yes | Yes | Yes | Yes |

### Ready-made actions and rules

These actions, conditions, and rules come from BasicPlugin. In an embedded product, register it with runtime.WithPlugin(...). Email, role checks, and predefined actors also need application settings or delegates.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Managing parameters](https://docs.workflowengine.io/plugins/basic-plugin/managing-parameters/).** Set, copy and clear process parameters from the scheme, without writing an action for each one. | Yes | Yes | Yes | Yes |
| **[HTTP requests](https://docs.workflowengine.io/plugins/basic-plugin/http-requests/).** Call an external service from a step and put the answer into a process parameter. | Yes | Yes | Yes | Yes |
| **[Sending emails](https://docs.workflowengine.io/plugins/basic-plugin/sending-emails/).** Configure SMTP settings on BasicPlugin or supply them in the action parameters. Process parameters can fill the recipient, subject, and body. | Yes | Yes | Yes | Yes |
| **[Managing subprocesses](https://docs.workflowengine.io/plugins/basic-plugin/managing-subprocesses/).** Start, wait for and finish child processes from the parent scheme. | Yes | Yes | Yes | Yes |
| **[Process control](https://docs.workflowengine.io/plugins/basic-plugin/process-control/).** CreateProcess creates an independent process. ExecuteCommand targets another existing process. SetState and SetActivity move a process, while IsProcessFinish checks whether it is finalized. | Yes | Yes | Yes | Yes |
| **[Parallel approval](https://docs.workflowengine.io/plugins/basic-plugin/parallel-approval/).** Several approvers on one step, with the rule for how many must agree before the process moves on. | Yes | Yes | Yes | Yes |
| **[Role-based authorization](https://docs.workflowengine.io/plugins/basic-plugin/role-based-authorization/).** CheckRole resolves role membership through the application's UsersInRoleAsync delegate. Without that delegate, BasicPlugin does not register the rule. | Yes | Yes | Yes | Yes |
| **[Predefined actors](https://docs.workflowengine.io/plugins/basic-plugin/predefined-actors/).** The application registers actor names with WithActor or WithActors and supplies callbacks that check identities and enumerate participants. WorkflowRuntime injects the configured actors into matching schemes. | Yes | Yes | Yes | Yes |

### APIs

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[In-Process API](https://docs.workflowengine.io/glossary/apis-and-integration/).** Direct .NET calls to WorkflowRuntime from your own code, with no serialization and no network in between. Workflow Server hosts the runtime itself, so an application talks to it over HTTP instead. | Yes | Yes | Yes | Inside the service, not your app |
| **[Bulk API](https://docs.workflowengine.io/evaluate/workflow-engine-features/bulk-api/).** The In-Process API exposed as runtime.Bulk. It runs one runtime operation across many process instances in parallel through a single call, and returns a result per item, so one failure does not roll the batch back. | Yes | Yes | Yes | Inside the service, not your app |
| **[Offline API](https://docs.workflowengine.io/evaluate/workflow-engine-features/offline-api/).** The In-Process API exposed as WorkflowRuntime.OfflineApi. It builds the approval map for a process, or runs an ordered batch of commands, in one call instead of a round-trip per step. | Yes | Yes | Yes | Inside the service, not your app |
| **[Workflow Engine HTTP API](https://docs.workflowengine.io/evaluate/workflow-engine-features/http-api/).** One package, OptimaJet.Workflow.Api, adds these endpoints to your .NET app. Workflow Engine NEO includes the licensed Data and RPC groups. Workflow Server exposes Workflow API (REST), Callback API and WFE API. | Designer and health endpoints only | Designer and health endpoints only | Full API included with Workflow Engine NEO | Workflow API (REST), Callback API and WFE API |
| **[Designer API](https://docs.workflowengine.io/evaluate/workflow-engine-features/http-api/).** The backend the Visual Workflow Designer talks to, mapped to a route such as /workflow-api/designer. It loads and saves schemes, compiles code actions and hands your own action types to the palette. It does not require Workflow Engine NEO, the Data API, or the RPC API. | Yes | Yes | Yes | Built into the server |
| **[Health Check API](https://docs.workflowengine.io/evaluate/workflow-engine-features/http-api/).** Liveness reports that the service is running, readiness checks the runtime and the database behind it, and a third endpoint answers for one named tenant and carries that tenant’s database status, which is what a Kubernetes probe acts on. These endpoints do not require Workflow Engine NEO, and Workflow Server carries the same endpoints inside the service. | Yes | Yes | Yes | Built into the server (Not documented. The endpoints are there, the documentation does not cover them yet.) |
| **[Data API](https://docs.workflowengine.io/evaluate/workflow-engine-features/http-api/).** The resource-oriented half of the HTTP API, over schemes, process instances, parameters, timers and approvals. Resource operations sit under /data and collection searches under /search, with filtering, sorting and paging, so a task list or an admin grid needs no queries of its own. It is included with Workflow Engine NEO; Workflow Server provides it through WFE API under its own license. | No | No | Yes | via Server |
| **[RPC API](https://docs.workflowengine.io/evaluate/workflow-engine-features/http-api/).** The operation-oriented half. It invokes runtime behaviour rather than reading records: create a process instance, execute a command, set state, list the commands available now. It is included with Workflow Engine NEO; Workflow Server provides it through WFE API under its own license. | No | No | Yes | via Server |
| **[OpenAPI (Swagger) specification](https://docs.workflowengine.io/evaluate/workflow-engine-features/http-api/).** Every mapped endpoint carries built-in OpenAPI metadata. The ASP.NET Core host must publish the document and optional UI with native OpenAPI, or with AddEndpointsApiExplorer() and AddSwaggerGen(). Without a Workflow Engine NEO or trial key the document can cover Designer and health endpoints; licensed Data, Search, and RPC groups are included when enabled. Workflow Server includes its Workflow API documentation inside the product UI. | Designer and health endpoints | Designer and health endpoints | Including Data, Search and RPC | via Server (The Workflow API documentation is built into the Workflow Server UI. The documentation site does not cover it yet.) |
| **[Workflow API (REST)](https://workflowengine.io/products/workflow-server/).** Workflow Server’s own incoming HTTP contract for managing the service and running workflows. An application calls it instead of embedding the runtime, and it remains available alongside WFE API. | No | No | No | Yes |
| **[Callback API](https://workflowengine.io/products/workflow-server/).** The contract the server calls to reach workflow logic you host yourself: actions, conditions, authorization rules and remote scheme generation. | No | No | No | Yes |

### Storage

Each database is served by a persistence provider, the package that keeps processes, timers and history in it. You install one and name it at startup.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Microsoft SQL Server](https://docs.workflowengine.io/evaluate/workflow-engine-features/multi-database-support/).** Covers MS SQL Server, Azure SQL Database and Azure SQL Managed Instance. Persistence provider package: WorkflowEngine.NETCore-ProviderForMSSQL. | Yes | Yes | Yes | Yes |
| **[Azure SQL Database](https://docs.workflowengine.io/evaluate/workflow-engine-features/multi-database-support/).** Served by the SQL Server persistence provider, WorkflowEngine.NETCore-ProviderForMSSQL. The same package you would use for SQL Server on your own hardware. | Yes | Yes | Yes | Yes |
| **[Azure SQL Managed Instance](https://docs.workflowengine.io/evaluate/workflow-engine-features/multi-database-support/).** Served by the SQL Server persistence provider, WorkflowEngine.NETCore-ProviderForMSSQL. | Yes | Yes | Yes | Yes |
| **PostgreSQL.** Persistence provider package: WorkflowEngine.NETCore-ProviderForPostgreSQL. | Yes | Yes | Yes | Yes |
| **MongoDB.** Covers MongoDB and Azure Cosmos DB through its MongoDB interface. Persistence provider package: WorkflowEngine.NETCore-ProviderForMongoDB. | Yes | Yes | Yes | Yes |
| **[Azure Cosmos DB](https://docs.workflowengine.io/evaluate/workflow-engine-features/multi-database-support/).** Served by the MongoDB persistence provider, WorkflowEngine.NETCore-ProviderForMongoDB, through Cosmos DB’s MongoDB interface. | Yes | Yes | Yes | Yes |
| **MySQL.** Persistence provider package: WorkflowEngine.NETCore-ProviderForMySQL. | Yes | Yes | Yes | Yes |
| **Oracle Database.** Oracle Database, not MySQL, which Oracle also owns and which has its own row above. Persistence provider package: WorkflowEngine.NETCore-ProviderForOracle. | Yes | Yes | Yes | Yes |
| **SQLite.** Use it for evaluation and local development. Not recommended for industrial use, it does not run on classic .NET Framework, and this version may not work on macOS with Apple Silicon. Workflow Server does not ship it. Package: WorkflowEngine.NETCore-ProviderForSQLite. | Yes | Yes | Yes | No |
| **[Automatic database migration](https://docs.workflowengine.io/evaluate/workflow-engine-features/database-versioning/).** RunMigrations() applies schema changes for SQL Server, PostgreSQL, MySQL, Oracle and SQLite. It does not support MongoDB; apply any MongoDB update script required by the release notes manually. Workflow Server runs both Workflow Engine and server-specific migrations for its four SQL providers when CreateMetadata is enabled; MongoDB remains manual when an update is required. | Limited: SQL providers only | Limited: SQL providers only | Limited: SQL providers only | Limited: SQL providers only |

### Multitenancy

Every Workflow Engine license includes TenantId storage. The separate Workflow Engine NEO product adds ready multitenancy across the built-in workflow operations of the HTTP API.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **TenantId in Workflow Runtime.** Workflow Runtime stores the TenantId supplied when a process is created and passes it to subprocesses. Every Workflow Engine license includes this building block; your application decides how to use it and control access. | Yes | Yes | Yes | Inside the service |
| **[Ready multitenancy in the HTTP API](https://workflowengine.io/features/multi-tenancy/).** Workflow Engine NEO applies tenant context across the built-in workflow operations of its HTTP API. It supports shared storage, a database or schema per tenant, or a mix. Your own endpoints and application data remain your responsibility; tenant access checks are available when API security is enabled. Workflow Server provides its own ready multitenancy from Business Complete, with the included tenant count shown for each edition. | No | No | Yes | Starter: Not available; Subscription: Not available; Business: Not available; Business Complete: 1 tenant included; Business SaaS: 5 tenants included; Business Ultimate: 100 tenants included; Custom: Multi-tenant, terms in quote |

### Scale and clustering

Multiple Workflow Runtime instances can serve the same database and schema. Runtime count is separate from tenant placement.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Horizontal scaling (multi-instance)](https://docs.workflowengine.io/evaluate/workflow-engine-features/clustering/).** Single-server on Workflow Engine Free and on the Team edition. Multi-server starts with the Workflow Engine Complete edition and is included in every edition of Workflow Engine NEO. The embeddable products run equal instances with no master: they share only the database, one live instance is enough, and you bring your own load balancer. Workflow Server is single-server on Starter, Subscription and Business, then multi-server from Business Complete upward. In multi-server mode it names one node the timer master and turns the time manager off on the others. | No | Team Edition: Single-server; Complete Edition: Multi-server | Yes | Starter: Single-server; Subscription: Single-server; Business: Single-server; Business Complete: Multi-server; Business SaaS: Multi-server; Business Ultimate: Multi-server; Custom: Multi-server |
| **Process locking through the database.** Commands and timers take exclusive access to a process instance through the database, so two nodes cannot advance the same process at once. | Yes | Yes | Yes | Yes |

### Identity & access

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Active Directory / LDAP; Microsoft Entra via Domain Services](https://docs.workflowengine.io/glossary/plugins-and-extensions/).** The .NET products use the licensed Active Directory Plugin with LDAP-compatible endpoints: an add-on for both Workflow Engine editions and for Workflow Engine NEO Subscription and Business, included with Workflow Engine NEO SaaS and Enterprise. In Microsoft Entra environments, connect through an LDAP-compatible service such as Microsoft Entra Domain Services; the plugin does not call Microsoft Entra ID APIs directly. Workflow Server imports users over LDAP through its own admin panel. | No | Add-on | Subscription and Business: Add-on; SaaS and Enterprise: Included | Yes |
| **[OpenID Connect / OAuth2](https://docs.workflowengine.io/evaluate/workflow-engine-features/pluggable-security/).** Built in on Workflow Server (OpenIddict since 9.0.0). The .NET products authenticate nobody: your application signs the user in, and the engine asks your rule provider who may act. | Via your app | Via your app | Via your app | Yes |
| **[Steps assigned to roles or groups, not user IDs](https://workflowengine.io/features/pluggable-security/).** One interface, IWorkflowRuleProvider, answers two questions for the engine: may this user fire this command, and who else may. Restrict a transition to "any manager" or to an Active Directory group, and your identity system stays the only place users live. It ships in the Core package, so no license gates it. | Yes | Yes | Yes | Yes |
| **Built-in user and role store.** The .NET products keep no user table on purpose: identity stays in your system. Workflow Server manages its own users and roles, and can import them over LDAP. | No | No | No | Yes |

### Running it in production

What an operator does once processes are live, and what they can prove afterwards.

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **[Transition history (audit trail)](https://docs.workflowengine.io/evaluate/workflow-engine-features/process-logs/).** Transition history records each state change, its time and trigger. User-driven entries store actor and executor identity IDs and can include display names. Embedded applications resolve IDs to names through their own identity system. Automatic transitions and timers may have no person. | Yes | Yes | Yes | Yes |
| **[Direct State Control (move a stuck process)](https://docs.workflowengine.io/evaluate/workflow-engine-features/direct-state-control/).** Moves a process directly to an activity enabled for Set State, without using the trigger, conditions, or restrictions of a configured transition into it. Use it as an administrative override, not normal command execution. | Yes | Yes | Yes | Yes |
| **[Process migration to a new scheme version](https://docs.workflowengine.io/evaluate/workflow-engine-features/process-versioning/).** Move existing processes to a newer scheme version explicitly, one at a time or in a batch, or enable lazy migration at activities marked for automatic scheme update. | Yes | Yes | Yes | Yes |
| **Admin console.** Workflow Server ships its own HTTP API and admin UI. | No | No | No | Yes |

### Licensing, support & limits

| Feature | Workflow Engine Free | Workflow Engine | Workflow Engine NEO | Workflow Server |
| --- | --- | --- | --- | --- |
| **License model.** The model is set by edition. Workflow Engine Team and Complete; Workflow Engine NEO Business, SaaS, and Enterprise; and Workflow Server Starter, Business, Business Complete, Business SaaS, and Business Ultimate are perpetual. Workflow Engine NEO Subscription and Workflow Server Subscription are annual; Workflow Server Custom terms are defined in its quote. | Perpetual | Team: Perpetual; Complete: Perpetual | Subscription: Annual subscription; Business: Perpetual; SaaS: Perpetual; Enterprise: Perpetual | Starter: Perpetual; Subscription: Annual subscription; Business: Perpetual; Business Complete: Perpetual; Business SaaS: Perpetual; Business Ultimate: Perpetual; Custom: Defined in quote |
| **Licensed use.** The grant is edition-specific. Embedded-product terms distinguish personal non-commercial use, internal commercial use, public web apps or SaaS, and OEM redistribution. The Workflow Server price list distinguishes Starter for personal use from commercial use on every other edition. | Personal, non-commercial use | Team: Internal commercial use; Complete: Internal commercial use | Subscription: Public web app or SaaS; Business: Internal commercial use; SaaS: Public web app or SaaS; Enterprise: Public web app, SaaS, or OEM | Starter: Personal use only; Subscription: Commercial use; Business: Commercial use; Business Complete: Commercial use; Business SaaS: Commercial use; Business Ultimate: Commercial use; Custom: Commercial use |
| **[Included support](https://workflowengine.io/pricing/).** What the license itself covers. Workflow Engine and Workflow Engine NEO support plans are annual and sold separately. Workflow Server support follows its separate price list. | Docs and discussions | Team: Docs and discussions; Complete: 2 months direct support | Subscription: Docs and discussions; Business: 2 months direct support; SaaS: 2 months direct support; Enterprise: 12 months standard support | See Workflow Server price list |
| **[Separate support plan](https://workflowengine.io/enterprise/#support)** | No | Annual SLA-backed plan | Annual SLA-backed plan | See Workflow Server price list |
| **Full product source-code access.** For the embedded products, this means a one-year GitHub window to the full Workflow Engine source, provided as is. Workflow Server source access is a separate entitlement for that product. | No | Team: Not available; Complete: $5,000 add-on | Subscription: Not available; Business: $10,000 add-on; SaaS: $15,000 add-on; Enterprise: Included | Starter: Not available; Subscription: Not available; Business: Not available; Business Complete: Not available; Business SaaS: Not available; Business Ultimate: Included for 1 year; Custom: Included for 1 year |
| **[Schemes](https://workflowengine.io/pricing/).** Every edition is named in the cells: Workflow Engine has Team and Complete editions; Workflow Engine NEO has Subscription, Business, SaaS and Enterprise editions; Workflow Server has Starter, Subscription, Business, Business Complete, Business SaaS, Business Ultimate and Custom editions; and Workflow Engine Free has no editions. Public prices for the embedded products are on the pricing page; Workflow Server follows its separate price list, with Custom terms defined in a quote. | 10 | Team Edition: Unlimited; Complete Edition: Unlimited | Subscription Edition: Unlimited; Business Edition: Unlimited; SaaS Edition: Unlimited; Enterprise Edition: Unlimited | Starter: 2; Subscription: 5; Business: Unlimited; Business Complete: Unlimited; Business SaaS: Unlimited; Business Ultimate: Unlimited; Custom: Unlimited |
| **[Execution threads](https://docs.workflowengine.io/evaluate/workflow-engine-editions/).** How many workflow processes one running engine advances at the same time. | 4 | Team Edition: 8; Complete Edition: Unlimited | Subscription Edition: Unlimited; Business Edition: Unlimited; SaaS Edition: Unlimited; Enterprise Edition: Unlimited | Starter: 1; Subscription: 4; Business: Unlimited; Business Complete: Unlimited; Business SaaS: Unlimited; Business Ultimate: Unlimited; Custom: Unlimited |
| **[Commands per scheme](https://docs.workflowengine.io/get-started/concepts/command/).** A command is an action a user or system can trigger on a process, such as Approve or Reject. | Unlimited | Team Edition: 100; Complete Edition: Unlimited | Subscription Edition: Unlimited; Business Edition: Unlimited; SaaS Edition: Unlimited; Enterprise Edition: Unlimited | Starter: 5; Subscription: 10; Business: Unlimited; Business Complete: Unlimited; Business SaaS: Unlimited; Business Ultimate: Unlimited; Custom: Unlimited |
| **[Activities per scheme](https://docs.workflowengine.io/get-started/concepts/activity/).** An activity is a step or state in the process, the boxes on the designer canvas. | Unlimited | Team Edition: 100; Complete Edition: Unlimited | Subscription Edition: Unlimited; Business Edition: Unlimited; SaaS Edition: Unlimited; Enterprise Edition: Unlimited | Starter: 25; Subscription: 50; Business: Unlimited; Business Complete: Unlimited; Business SaaS: Unlimited; Business Ultimate: Unlimited; Custom: Unlimited |
| **[Transitions per scheme](https://docs.workflowengine.io/get-started/concepts/transition/).** A transition is the arrow between two activities, with the condition that decides when it fires. | Unlimited | Team Edition: 500; Complete Edition: Unlimited | Subscription Edition: Unlimited; Business Edition: Unlimited; SaaS Edition: Unlimited; Enterprise Edition: Unlimited | Starter: 50; Subscription: 200; Business: Unlimited; Business Complete: Unlimited; Business SaaS: Unlimited; Business Ultimate: Unlimited; Custom: Unlimited |

Evaluating NEO? The HTTP API still maps Designer and health-check endpoints without a NEO key. A NEO key or a trial key from https://trial.workflowengine.io enables the Data, Search, and RPC groups.

Need a feature that is not in this table? Contact hello@optimajet.com.

## Which product fits

### Pick Workflow Engine Free

The full library with documented usage limits, licensed for personal, non-commercial use. Use it for evaluation, learning, research, and small non-commercial projects. Use a trial key to evaluate licensed features for a commercial proof of concept.

Try Workflow Engine Free: https://workflowengine.io/products/community-edition/

### Pick Workflow Engine

Choose Team or Complete when your .NET application calls the embedded runtime directly and does not need the Data, Search, and RPC API groups included with Workflow Engine NEO. Both are perpetual editions for internal commercial .NET applications. Public SaaS requires the corresponding edition of Workflow Engine NEO; OEM distribution requires Workflow Engine NEO Enterprise. No royalty or per-execution fee applies within the licensed use. Included support depends on the edition: Team is self-service, while Complete includes two months of direct support. Annual SLA-backed support plans are available separately.

Explore Workflow Engine: https://workflowengine.io/products/dotnet-workflow-engine/

### Pick Workflow Engine NEO

You work with workflows over HTTP, from a web or API backend, a JavaScript or mobile frontend, or separate services. NEO adds a ready HTTP API (Data API, RPC API) and full hybrid multitenancy. Multi-tenant SaaS is the main case; a single-tenant web app counts too.

Explore Workflow Engine NEO: https://workflowengine.io/products/workflow-engine-neo/

### Pick Workflow Server

Your stack is not .NET, or you prefer to run a separate service instead of embedding a library. Comes as a Docker image with its own HTTP API and admin console.

See Workflow Server: https://workflowengine.io/products/workflow-server/

## Common questions

### Which Workflow Engine product do I need?

Choose by how your application talks to the engine. Workflow Engine Free is for personal, non-commercial evaluation, learning, research, and small non-commercial projects within its usage limits. Use a trial key to evaluate licensed features for a commercial proof of concept; an internal tool needs a paid product and edition. Workflow Engine embeds in your .NET app and is the default for most teams. Workflow Engine NEO is a separate product based on Workflow Engine and adds a ready HTTP API (Data API and RPC API) and full multitenancy for working with workflows over HTTP. Workflow Server is a separate, standalone product in Docker with its own HTTP API, for teams that want a ready-to-run service for any stack.

### What is the difference between Workflow Engine and Workflow Engine NEO?

They are separate products in the same product family. Workflow Engine NEO is based on Workflow Engine since v19.0.0. Every Workflow Engine license includes TenantId storage: Workflow Runtime stores the value supplied when a process is created, and your application decides how to use it. Workflow Engine NEO adds tenant context across the built-in Data, Search, and RPC operations plus logical, physical, and hybrid tenant placement. Every edition of Workflow Engine NEO includes the Forms Plugin; it is also available as an add-on for the Workflow Engine Complete edition. If the HTTP API package is installed without a NEO key, it still maps Designer and health-check endpoints, while a NEO or trial key enables the Data, Search, and RPC groups.

### What is the difference between Workflow Engine Free and Workflow Engine?

Same library, different license. Workflow Engine Free is for personal, non-commercial evaluation, learning, research, and small non-commercial projects within its documented usage limits. Use a trial key to evaluate licensed features for a commercial proof of concept. Workflow Engine has two commercial editions, Team and Complete, both licensed for internal commercial use. Team raises the limits but retains 8 execution threads and per-scheme caps of 100 commands, 100 activities, and 500 transitions. Complete removes those limits and adds multi-server deployment. Included support depends on the edition: Team is self-service, while Complete includes two months of direct support. Annual SLA-backed support plans are available separately. You can start on Workflow Engine Free and move to a paid license later without rewriting code.

### Do I need Workflow Engine NEO or Workflow Server?

Pick NEO when you want to embed a workflow HTTP API into your own .NET application and operate it yourself. Pick Workflow Server when you want a ready-to-run standalone application. It comes as a Docker image with its own HTTP API, admin console, user and role system, and OpenID, and is used over HTTP from any stack. Workflow Server is a separate Optimajet product, licensed separately.

### What is the difference between Workflow Engine and Workflow Server?

Workflow Engine is a .NET library you embed in your own app and call from C#. Workflow Server is a separate, ready-to-run product, a Docker image with its own HTTP API and admin console that you deploy and operate, used over HTTP from any stack. Workflow Engine is the cheaper development tool; Workflow Server is the ready-to-run application built on top of it. The same workflow schemes run in both.

### Can I switch from Workflow Engine to Workflow Engine NEO without rewriting code?

Yes. For an existing application on the same product version, moving from Workflow Engine to Workflow Engine NEO requires only registering the Workflow Engine NEO license key. Your existing schemes, Workflow Runtime integration, and process logic continue unchanged. You can adopt Workflow Engine NEO capabilities gradually.

### Which databases do the four products support?

The .NET products support six database providers: SQL Server, PostgreSQL, MongoDB, MySQL, Oracle and SQLite. Workflow Server supports five of them, because it does not ship the SQLite provider. SQLite is supported, but not recommended for production workloads; validate it against your concurrency and durability requirements. The SQL Server provider also covers Azure SQL Database and Azure SQL Managed Instance, and the MongoDB provider covers Azure Cosmos DB.

### How much does each product cost?

Public pricing for Workflow Engine and Workflow Engine NEO is available on the pricing page. Contact us for the current Workflow Server price list. Workflow Engine NEO Enterprise and Workflow Server Custom are quoted individually.

## Where to go next

- Workflow Engine Free: https://workflowengine.io/products/community-edition/
- Workflow Engine: https://workflowengine.io/products/dotnet-workflow-engine/
- Workflow Engine NEO: https://workflowengine.io/products/workflow-engine-neo/
- Workflow Server: https://workflowengine.io/products/workflow-server/
- Pricing: https://workflowengine.io/pricing/
- Free 30-day trial key: https://trial.workflowengine.io
- Book a demo: https://workflowengine.io/book-a-demo/
- Weighing an outside engine instead: https://workflowengine.io/blog/elsa-vs-workflow-engine/ walks one approval process through Elsa Workflows and Workflow Engine.

In production since 2014 at Dell, KPMG, Bosch, and GE Honda Aero Engines.
