Demo Mode
You can develop and test an entire project in Demo Mode.
Latest stable release
Version 2026/11/02 — download the latest stable release and review the release notes below.
Recent versions
Validate each new version in a test environment before you install it on a production system.
You can develop and test an entire project in Demo Mode.
Select the version you run in the Upgrade Assistant and see what to do before you upgrade.
Get started with our EnvisionSCADA Knowledge Base.
Join the LinkedIn community and follow updates.
Complete published release history from the download page.
WriteVariable is limited to the same variables, while the gateways write Writeable Local variables as before. See the Python Scripts and Local Variables articles.C:\Program Files\EnvisionSCADA\<version>, which may need an antivirus exclusion. From then on, use the setup of this or a later version on that server.C:\ProgramData\EnvisionSCADA\<instance>. A new setup updates the instances you select. See the Multiple Instances article.SYSTEM.ExternalSourcePointCount holds it. If this is unexpected for your situation, contact support@omniconautomation.com. See the Local Variables and License articles.@Variable, @Start and @End. InfluxDB 3 is read only, so the Data Grid lists its measurements with editing off, and Allow Database Query is available. An InfluxDB 2.x connection serves Data Forwarders as before. See the History Sources, Database Query and Data Grid articles.while True and a network or file call without Network & File Access. See the Python Scripts article.docker pull selects the image of the host.
.so files in Python Libraries. Version tags before 2026.11.02 remain linux/amd64. See the Docker article./app/certs folder of the container, so secure connections work on Docker as on Windows.
/app/certs/pki when the container is recreated, and MQTT and Kafka read TLS certificates from /app/certs/tls; mount /app/certs on a volume. Kafka devices get their own TLS certificate settings. See the Docker and Kafka Devices articles.fetch() of a Module script, for example to trend the archive of an external historian. Pens of the same script and History Parameters are read in one call. Test and Browse on the Historian tab check the source before saving.0.00 or #,##0.00.
[PLC], are now also replaced by Navigate To, Pull, Push and the API and MCP instance create and push. A token that stayed raw is replaced at the next navigation, push or pull.
HistoricData is now a view, so trends, reports and your own SQL keep reading it. A script that looks the table up in sqlite_master with type = 'table' has to accept a view: see the Database Migration After an Upgrade article.PageDatabaseQuery(connection, sql), and a connection is opened to queries with Allow Database Query and an optional Access Right. The DatabaseQueryAllowAll, AllowedSqliteDatabases and AllowedSqlServers parameters are removed, so scripts using the old call have to be converted: see the Database Query and Database Connections articles.Encrypt=True now also validates the server certificate.GetBoolValue reads BOOL variables whose value is True or False.
ShelveAlarms, UnshelveAlarms and GetSuppressedAlarms in the Runtime API and MCP.Database/DataGridMigration.json. Open the object in the designer, pick the Table or add a Fixed Filter, and the note disappears at the next save.PageGetSelectedDataTable becomes PageGetSelectedDataGridCells, PageDeselectDataTable becomes PageDeselectDataGrid and PageRefreshDataTable becomes PageRefreshDataGrid. The old names are no longer available, so a script typed by hand has to use the new ones.PageFillDataTableDynamic has no replacement. The connection and the table now belong to the object; narrow the rows at runtime with a Fixed Filter that uses a variable, or with PageSetDataGridFilter.Admin and the password Admin.Database migration in progress page. The engine stays down and the API returns 503 until it completes. Allow roughly 35 seconds per 1.5 GB of historian, and up to an hour for the index rebuild on a very large historian. The migration needs 10% of the historian file size in free disk space (at least 256 MB) and is refused up front if that is not available. It can be interrupted and resumes where it stopped.#. Existing projects keep running, but a name containing either character is refused the next time that row is saved. Rename them at your convenience.Device field has been removed from the read and write variable requests. Pass the full variable name in Variable.GET /API/Design/Objects now returns a summary list, and the per-object read is replaced by GET /API/Design/Objects/Details with an objectIds list.data-actions object where an array is expected, is now refused at save with a message naming the fix. Existing pages are not affected.RecipeTargets everywhere in the API, MCP and exports. Existing recipes keep working and older project exports still import.while True: and while 1: are refused when the script is saved. Use Schedules for repeated execution. SetValue with a boolean now stores 0 or 1.{Device} replacer is optional and resolves to the owning device.{Device} when several devices share an identical variable set that would otherwise collide. A literal name stays as it is when the device is renamed, while a name using {Device} follows the rename.Counter is valid..xlsx when Excel compatible is enabled for a banded report.RunReport(), MCP, or Execute now on the Reports page.SendEmail() can mail a report that a script just produced.client.SelectedTheme.Flow1 leaves Flow10 alone. A user group rename also updates the User Groups lists on variables, pages, scripts, reports and UDT members, the user memberships, and page objects that test SYSTEM.UserGroups.SendEmail() sends mail with attachments, and RunReport() renders a report./mcp or by enabling AI Chat in Parameters using your own OpenAI or Anthropic API key.PostMessage.
client.PageLayer1 to show layer states.
client.PageScale variable.
wwwroot/Project folders.
:Raw for variables.
%MW10.5.
\\.
Global Page Script is now available.
[].
DatabaseQuery.
SetValue, GetIntValue, and related helpers.
%I.
*.
*_Pump1, Pump1*, *Start*...0000001 or ..999999 numbers.
PageDatabaseQuery now returns database errors.
-) option to numpad.
PageNavigate.
WriteVariable.
MinimumTime (Time Deadband) for variables.
SampleGroup (Periodic Historizing) for variables.
SampleGroup values can be set on variables.https://192.168.0.10/AlarmViewer?handler=Embedded.MinRaw, MaxRaw, MinScaled, MaxScaled, Units, and Deadband are now accessible through device.variable:property.
toISOString() bug when using the Trend Object with historical values.
| is in the NodeId.
pages configuration page.
4xxxx.1 for BOOL, only %MWxx.1.
Is Background option.
OnPageLoad() triggering before first data is received.
currentColor as stroke or fill color for animation.
PageRefreshDataTable.
Transfer Recipe.
Execute PageScript.
Login.
DisableZoom.
{UID} for client variables when used within popups.
& operator.