Overview
SymmetricDS Pro 3.17 release includes 21 features, 19 improvements, and 20 bug fixes.
What’s New
Redesigned Dashboard: Network and Pipeline Views
The SymmetricDS Pro Dashboard has been rebuilt with two purpose-built views that give you instant visibility into replication health — no matter how your topology is structured.
The Network View is built for deployments where the central node actively participates in replication. A new Activity panel breaks down replication health across five pipeline stages — Route, Extract, Transfer, Load Out, and Load In — with backlog counts, timing, node coverage, and historical graphs for each stage. Filter by All, Online, or Offline nodes to pinpoint exactly where work is piling up. A companion Throughput panel provides a real-time pulse on data movement across your entire network.
The Pipeline View is purpose-built for hub-and-spoke deployments where the central node acts as a relay. Each endpoint pair is displayed as an individual pipeline with its own status indicator, giving operators an at-a-glance operational board. Common actions like triggering an initial load or pausing replication are available directly from the pipeline grid — no menu hunting required.
Redesigned Configure Diagram with Pipeline Support
The Configure Canvas has been renamed to the Configure Diagram and now supports both network and pipeline layouts. During initial deployment, the Deploy Wizard asks which mode fits your topology. In pipeline mode, the hub node is minimized in the diagram to reduce visual clutter and keep the focus on the endpoint pairs that matter most to your day-to-day operations.
Databricks Platform Support
SymmetricDS Pro now supports Databricks as a replication target, providing a direct path from your operational databases to your data lakehouse. The Databricks endpoint operates as write-only, with SymmetricDS runtime metadata stored in a separate H2 database.
Job Schedule Frequency Controls
The Job Schedule Manager now supports fine-grained scheduling for Push, Pull, and custom jobs (SQL, BeanShell, Java, and more), with minimum intervals tied to your license tier. Standard Pro Edition supports intervals as low as every 1 minute, while Enterprise Pro Edition removes the lower limit entirely — enabling near-real-time push and pull cycles for the most latency-sensitive deployments.
Microsoft SQL Server and Oracle: Now Pro Platform Features
Starting with SymmetricDS 3.17, support for Microsoft SQL Server and Oracle database platforms has moved to SymmetricDS Pro. Organizations using these enterprise databases will benefit from Pro-exclusive capabilities including enhanced monitoring, the redesigned Dashboard, and priority support. Existing open source deployments using these platforms should plan to upgrade to Pro to continue receiving updates and support for these platforms.
Capture Changes Only Per Trigger
Fine-tune how SymmetricDS captures update data on a per-trigger basis. Previously, capturing only changed columns on updates was an all-or-nothing setting at the node level (trigger.update.capture.changed.data.only.enabled). Version 3.17 introduces a capture_changes_only column on sym_trigger, giving you precise control over which tables use change-only capture and which require full row capture — without blanket node-level overrides.
DDL Replication Loop Prevention
Multi-master and bidirectional deployments with DDL capture enabled no longer need custom workarounds to prevent schema changes from looping back to the originating node. SymmetricDS 3.17 includes built-in DDL loop detection and prevention, ensuring schema changes replicate to their intended targets and stop — making DDL replication production-ready out of the box.
Enhanced Replication Statistics
SymmetricDS 3.17 significantly expands the statistics available for monitoring and diagnostics, giving operations teams and monitoring integrations deeper visibility into replication health:
-
sym_node_host_channel_statsnow tracksdata_received,data_bytes_received,data_min_create_time, anddata_max_create_time— enabling inbound throughput measurement and data latency tracking per channel. -
sym_outgoing_batchnow recordsdata_min_create_timeanddata_max_create_time, so you can calculate true end-to-end replication lag from data capture to batch delivery. -
sym_node_host_statsnow records gap counts and unrouted row counts, providing early warning signals for routing backlogs before they become problems.
Node Channel Control Improvements
The node_channel_control table now includes a target_node_id column, making it possible to suspend or ignore synchronization between two specific nodes in an individual direction. For ease of use and increased visibility, SymmetricDS now synchronizes this table between nodes via the config channel. In addition, the behavior of this table is more consistent and no longer affected by the group link’s data event action. When upgrading to 3.17, all rows will be deleted from the node_channel_control table.
Issues
New Features
3.17.0 (Pro)
SYM-7006 - Implementing syncing for google sheets or drive
SYM-7017 - Add a pipeline view to the Configure Canvas and rename it to the Configure Diagram
SYM-7032 - Add an Activity panel to the Dashboard
SYM-7067 - Add Loaded Time and Bytes columns to the Load Details screen
SYM-7071 - Add a pipelines view to the Dashboard
SYM-7076 - Add a console user privilege for changing the dashboard layout
SYM-7082 - Add a table and a service for console user preferences
SYM-7117 - Finalize the Dashboard’s network view
SYM-7137 - Streamline the Load Data Wizard
SYM-7158 - Make it possible to activate mirror mode via the Configure Diagram
3.17.0
SYM-7044 - Add data_received and data_bytes_received columns to sym_node_host_channel_stats
SYM-7056 - Add data_min_create_time and data_max_create_time columns to sym_node_host_channel_stats
SYM-7058 - Add data_min_create_time and data_max_create_time columns to sym_outgoing_batch
SYM-7070 - Record the number of gaps and unrouted rows to sym_node_host_stats
SYM-7092 - Add a target_node_id column to sym_node_channel_ctl
SYM-7108 - Add a capture_changes_only column to sym_trigger
SYM-7150 - Prevent DDL replication loops
SYM-7154 - Prototype RestWriter extending IDatabaseWriterFilter for POC
SYM-7246 - Multi-homed nodes should communicate internally instead of using the network
SYM-7296 - Add a description column to sym_node_group_link
SYM-7307 - Redact the smtp.password parameter in snapshot export
Improvements
3.17.0 (Pro)
SYM-6935 - Display a badge next to the table on the Load Details screen when the default loader runs an insert that goes into conflict
SYM-7075 - Disable the registration.require.initial.load parameter by default when using the pipelines view
SYM-7148 - Make the StatisticManager keep track of the most recent ProcessInfo that did work on non-system data for each ProcessType
SYM-7190 - Improve the behavior of the tabs in the top bar when using the pipelines view
SYM-7202 - Improve the Configure Diagram’s Define Endpoint screen
SYM-7216 - Exclude the hub node from the Nodes Dashboard panel
SYM-7233 - On the Manage Outgoing/Incoming Batch screens, clear the node ID filter when switching engines
SYM-7244 - When deploying with no tables, the dialog that pops up should be styled more like a warning
SYM-7282 - Re-label Environment Setup Wizard "Finish" button
SYM-7286 - Pipeline Dashboard: resolve confusion around use the "?" icon
SYM-7357 - Align oracle.* and tibero.* parameters with the PRO edition
SYM-7364 - Align mssql.* parameters with the PRO edition
SYM-7369 - Remove obsolete jTDS driver from documentation and add comments for MS SQL Server dialects
3.17.0
SYM-7078 - Update the reload channel’s Data Loader Type to bulk on an upgrade
SYM-7118 - Upgrade H2 library to 2.4.240
SYM-7124 - Switch to JSON for SQL-Explorer settings
SYM-7155 - REST endpoint support (load-only)
SYM-7214 - Remove the symadmin remove-node subcommand’s -n option and use an argument instead
SYM-7330 - Add Documentation For the Rest Endpoint
Bug Fixes
3.17.0 (Pro)
SYM-6633 - Bulk Load percentage shows greater than 100% when bulk load fails and it falls back to default loading
SYM-7140 - Monitor attempts to decrypt mail server password when smtp.auth=false
SYM-7306 - Canvas shows deleted pipelines
SYM-7313 - 3.17 deploy of nodes with error causes user to be stuck
SYM-7345 - Deploy Wizard UI: selecting "Next" button does nothing when missing source tables
SYM-7355 - MinIO library update (CVE-2025-59952)
SYM-7356 - MS SQL Server driver library update (CVE-2025-59250)
SYM-7371 - Second deployment of Pipeline-based environement does not clear out HUB runtime tables
SYM-7374 - Transform set up on Canvas saves incorrect target table
SYM-7392 - SQL Server: BCP parameter documentation refers to ASE parameters
3.17.0
SYM-7255 - Transform Configuration UI fails for cross-schema configurations - incorrect metadata lookups
SYM-7258 - Prevent DDL loop back to the source node
SYM-7268 - Setting sym_node_group_link.sync_sql_enabled=0 doesn’t prevent captured DDL from synchronizing if the DDL affected a table with an active trigger history
SYM-7270 - Integration test fails for PostgreSQL - wildcard table trigger
SYM-7324 - Open source messaging for MS SQL Server and Oracle platforms
SYM-7329 - License limit violation (false-positive) for node count
SYM-7354 - The Routing Process not displayed under "Source Activity" column on a pipeline dashboard
SYM-7359 - Format error in Oracle appendix for 3.17
SYM-7373 - Demo tutorial claims initial load is automatic after registration, but auto.reload is not set
SYM-7391 - Parameter oracle.use.hints needs to be put into symmetric-console-default.properties
Tables
The following changes were made to the definition of configuration and runtime tables. Table changes are applied to the database automatically using data definition language (DDL) during startup.
New Tables
| Table Name | Description |
|---|---|
|
New Columns
| Column Name | Description |
|---|---|
|
The number of bytes that were transferred to the target for this table |
|
The rows in this table that went into conflict when loaded to the target |
| Column Name | Description |
|---|---|
|
A field that can be populated for use by routing. |
| Column Name | Description |
|---|---|
|
Unique identifier for a target node for which this channel will be suspended and/or ignored. |
| Column Name | Description |
|---|---|
|
An optional description of this link. |
| Column Name | Description |
|---|---|
|
The number of rows that were received during this time period. |
|
The number of bytes that were received during this time period. |
|
The minimum create time of a data row that was routed during this time period. |
|
The maximum create time of a data row that was routed during this time period. |
| Column Name | Description |
|---|---|
|
Number of non-expired data gaps during this period. |
|
Estimated number of unrouted data rows during this period. |
| Column Name | Description |
|---|---|
|
The minimum create time of a data row contained within this batch. |
|
The maximum create time of a data row contained within this batch. |
| Column Name | Description |
|---|---|
|
Set this to 1 to force a compare of old and new data. If old=new, then don’t record the change in the data capture table. This is currently supported by the following dialects: MySQL, Oracle, DB2, PostgreSQL, SQL Server. |
Modified Tables
-
Added primary keys:
target_node_id
-
Added index
idx_tbl_rld_sts(target_node_id,source_node_id,completed,cancelled)
Parameters
The following changes were made to add new parameters, modify their default value, modify their description, or remove them from use.
New Parameters
Specifies the charset to be used while writing bulk files to staging for import via BCP utility. The default will be the operating system. This parameter only applies to the BCP process for ASE. (Default: )
Display a list of pipelines on the Configure Diagram instead of a network of endpoints. (Default: false)
The number of milliseconds console user preferences will be cached by the ConsoleUserPreferenceService before they are reread from the database. (Default: 600000)
MinIO access key (Default: )
MinIO secret key (Default: )
MinIO endpoint url (Default: )
S3 Url to be used. Could be set when using LocalStack as s3 container and not AWS. (Default: )
VFS password for file sync (supports URLs with ftp:// and sftp://) (Default: )
VFS user for file sync (supports URLs with ftp:// and sftp://) (Default: )
Controls the behavior of the "clear" options in the Load Data Wizard. Possible values are "truncate" and "delete". A value of "truncate" will truncate the target table, while a value of "delete" will run the initial.load.delete.first.sql. (Default: truncate)
Automatically update data, data_event and outgoing_batch tables to allow only row level locking. (Default: true)
Specifies the charset to be used while writing bulk files to staging for import via BCP utility. The default will be the operating system. This parameter only applies to the BCP process for MS SQL Server. (Default: )
Includes the catalog/database name within generated triggers (catalog.schema.table). May need turned off to support backup processes such as creating a bacpac file (Default: true)
Disables lock escalation and turns off page level locking. May need turned off to support backup processes such as creating a bacpac file (Default: true)
Query for compression on tables and indexes, filtered indexes, and include columns. If you don’t have compressed tables or indexes, or filtered indexes, or include columns, or you are not sending table schema to nodes running SQL Server, set this parameter to false to speed up the reading of metadata. (Default: true)
Specify the user the SymmetricDS triggers should execute as. Possible values are { CALLER | SELF | OWNER | 'user_name' } (Default: caller)
Set the order of triggers to 'First' using sp_settriggerorder after creating triggers. This is needed when the user has existing custom triggers that modify data. The SymmetricDS triggers need to fire first and capture the first change so that order of changes is preserved. If the user has a trigger set as 'First', it will be changed to 'None'. (Default: false)
Use ntext for the data capture columns and cast to nvarchar(max) in the trigger text so that nvarchar, ntext and nchar double byte data isn’t lost when the database collation for char types isn’t compatible with n char types. (Default: false)
Specifies if snapshot isolation should be automatically turned on. (Default: false)
Use varchar(max) or nvarchar(max) when a column in SymmetricDS tables is set to long or nlong. This is for example necessary when using a _UTF8 of _SC collation. (Default: false)
This indicates how to process LOB values. "plain" is the default, which uses the JDBC interface directly. "createtemporarylob" uses the creation of CLOB/BLOB temporary objects to process the data. "streamlob" uses the stream interface of the JDBC interface (part of JDBC 4.0). (Default: plain)
For initial load extracting data to specify the number of parallel processes to use while selecting data from a table (Default: 1)
On Oracle RAC, an ordered sequence for sym_data must be coordinated across RAC nodes, which has wait overhead. By setting this to true, a no-order sequence is used instead, which performs better for high throughput. Because the sequence is no longer ordered, sym_data is queried using an order by of create_time and data_id. You will need to restart after changing this parameter to get DDL applied to the sequence and sym_data. (Default: false)
For Oracle RAC in no-order mode, this parameter provides two methods for managing data gaps across multiple nodes in the cluster. When left blank, routing will use gv$_sequences to manage gaps. Or, use this parameter to specify a comma-separated list of database URLs to connect to during the heartbeat, which ensures each RAC node has periodic activity within its gap to prevent the gap from expiring. (Default: )
This is the precision that is used in the number template for oracle triggers (Default: *,38)
Use the text minimum format model for capturing changes to number data types. When enabled, numbers are converted with to_char('TM'), which can capture up to 40 digits. When disabled, numbers are converted with cast to number(*,38), which can capture up to 38 digits. (Default: false)
On Oracle, enables an index hint when selecting from sym_data using data gaps. (Default: true)
Use nclob for the data capture columns and use to_nclob() in the trigger text so that double byte data isn’t lost when the database collation for char types isn’t compatible with n char types. (Default: false)
On Oracle, enables a full table scan hint when selecting from sym_data using the start data_id. (Default: false)
Optional API key for sending data to a rest service. (Default: )
The output format for data sent by the rest writer. Available options: JSON, XML (Default: JSON)
Determines whether delimited identifiers are used (as opposite to normal SQL92 identifiers) on target database connection. Note: SQL92 identifiers may only contain alphanumerical characters and the underscore, must start with a letter and cannot be a reserved keyword. DatabaseOverrideable: false (Default: true)
Modified Parameters
The cloud based character used in bulk loading to be used when quoting fields (Old Default: �) (New Default: ¿)
When using the earliest transaction time to expire gaps (routing.gaps.use.transaction.view=true), subtract the given number of milliseconds from the transaction time. This may be needed in a clustered environment where the time on each database master is not perfectly in sync. (Old Default: 10000) (New Default: 60000)
Specify the transport type. Supported values currently include: hybrid, http, internal, file. Set to "hybrid" to use internal communication for multi-homed nodes and network communication for remote nodes. Set to "http" to use network communication for all nodes. Set to "internal" to use internal communication for all nodes. Set to "file" to use offline file-based communication for all nodes. (Old Default: http) (New Default: hybrid)
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}
{REMOVED}