Overview

SymmetricDS Pro 3.16 release includes 47 features, 158 improvements, and 176 bug fixes.

Security Fixes

Issue Summary Severity

SYM-6234

Web console logins with OAuth 2.0 and OpenID Connect (Pro)

Medium

SYM-6692

Prevent logging of secrets in symadmin and wrapper

Medium

SYM-6753

Read-only users can run “Stage Management” job from Manage → Staging Area screen (Pro)

Medium

SYM-6754

Read-only users can edit Parameters via overrides (Pro)

Medium

SYM-6755

Read-only users can save SAML configuration (Pro)

Medium

SYM-6765

Add functionality to read the SAML IdP certificate from the IdP metadata URL (Pro)

Medium

SYM-6767

Sign SAML requests with SHA-256 instead of SHA-1 (Pro)

Medium

SYM-6770

Add a parameter to allow specification of OneLogin SAML properties via a properties file (Pro)

Medium

SYM-6776

Add functionality to have the purge job automatically rotate the SAML SP x509 certificate when it’s near expiration (Pro)

Medium

SYM-6823

A FileNotFoundException can occur when deploying multiple endpoints at once (Pro)

Medium

SYM-6853

Disallow access to WEB-INF (Pro)

Medium

SYM-6857

Upgrade chartjs and remove momentjs (Pro)

Medium

SYM-6874

Make it possible to import a CA certificate on the client node registration screen (Pro)

Medium

SYM-6978

Add a Send → CA Certificate button to the Manage Nodes screen (Pro)

Medium

SYM-7002

SSL certificate import wizard and trust checkup (Pro)

High

SYM-7026

Login screen should always be shown when an engine has been created (Pro)

Medium

SYM-7074

When importing a new CA via the Import Certificate Wizard, provide an option to send the imported certificate to remote nodes (Pro)

Medium

SYM-7077

Add ability to import SSL cert from symconsole command line tool (Pro)

Medium

SYM-7112

Vulnerability CVE-2025-7962 Severity: MEDIUM Package: org.eclipse.angus:smtp

Medium

SYM-7119

Better input sanitization

Medium

SYM-7570

Add debug logging to help users troubleshoot integrations with their OAuth provider (Pro)

Low

SYM-7607

Prevent Zip Slip Vulnerability

High

SYM-7608

Prevent Path Traversal Vulnerability

High

SYM-7628

Update Vaadin framework version to 24.10.6 (Pro)

Medium

SYM-7630

Update PostgreSQL JDBC driver version to 42.7.11

Medium

SYM-7632

Update swagger-ui library to 5.32.6+ to improve security

Medium

Performance Fixes

Issue Summary Severity

SYM-2338

Bulk Extract for MSSQL (Pro)

Medium

SYM-6538

Use source staging for incoming batch when engines are hosted together

Medium

SYM-6544

Bulk loader for Sybase ASE (Pro)

Medium

SYM-6551

Bulk export for SQL Server and Sybase ASE (Pro)

Medium

SYM-6585

Postgresql binary mode for COPY statement for bulk loads (Pro)

Medium

SYM-6616

Save column references as numeric values for faster look-up in AbstractDatabaseWriter.getRowData()

Medium

SYM-6687

Ready queues for more efficient push/pulls

Medium

SYM-6688

Dynamic reload queue to scale initial load (Pro)

Medium

SYM-6734

Multi-threaded routing by channel enabled by default

Medium

SYM-6787

During deployment, the Deploy Wizard should create engines in parallel (Pro)

High

SYM-6813

On the Deploy Wizard’s Endpoint Summary screen, indicate how good each endpoint’s connection is (Pro)

High

SYM-6889

Log miner batch mode to capture changes (Pro)

Medium

SYM-6943

Combine the Load Details screen’s queries for complete and incomplete tables into one query (Pro)

Low

SYM-7008

Allow other threads to access the node channel cache while it’s being refreshed

Medium

SYM-7144

Add index on load_id to outgoing_batch table to prevent table scans

Medium

SYM-7402

AS400 Log Miner: Support multiple journals via comma-separated list (Pro)

Medium

SYM-7443

Upgrade Spring Boot to latest 3.5.12 version (Pro)

High

SYM-7541

Database connection pool exhaustion in Routing job

High

SYM-7589

Prevent accumulation of Heartbeat batches for offline nodes when other nodes are healthy

High

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_stats now tracks data_received, data_bytes_received, data_min_create_time, and data_max_create_time — enabling inbound throughput measurement and data latency tracking per channel.

  • sym_outgoing_batch now records data_min_create_time and data_max_create_time, so you can calculate true end-to-end replication lag from data capture to batch delivery.

  • sym_node_host_stats now 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.

Monitor Events No Longer Broadcast Across the Network

Monitor events are now routed only upstream to the registration server, instead of being broadcast across every group link. Previously, monitor cycles on the registration server enqueued a batch on the monitor channel for every registered client — including offline ones — which caused outgoing batches to grow steadily until offline nodes reconnected. Monitor events generated on the registration server now stay local, and events generated downstream travel directly to their registration parent. No configuration is required; the new routing behavior is applied automatically on upgrade.

Any monitor batches already pending for an offline client at the time of upgrade will flush and purge automatically the next time that client reconnects. After upgrade no new batches accumulate, so no manual cleanup is needed.

Issues

New Features

3.16.0 (Pro)
SYM-6234 - Web console logins with OAuth 2.0 and OpenID Connect
SYM-6543 - Add a Configure Canvas to replace the Design tab
SYM-6544 - Bulk loader for Sybase ASE
SYM-6650 - Add a way to add a prefix or suffix to transforms when doing auto-create
SYM-6688 - Dynamic reload queue to scale initial load
SYM-6714 - Package Microsoft’s bcp utility into setup program
SYM-6715 - Package Oracle’s SQL*Loader utility into a module
SYM-6736 - Documentation for OAuth 2.0 and OpenID Connect
SYM-6750 - Exasol Support as a Target Platform

3.16.0
SYM-6538 - Use source staging for incoming batch when engines are hosted together
SYM-6687 - Ready queues for more efficient push/pulls
SYM-6703 - System channel and queue for responsive data sync

3.16.1 (Pro)
SYM-6759 - Add support for timestamp with time zone data type to Postgres binary bulk loader
SYM-6765 - Add functionality to read the SAML IdP certificate from the IdP metadata URL
SYM-6770 - Add a parameter to allow specification of OneLogin SAML properties via a properties file
SYM-6776 - Add functionality to have the purge job automatically rotate the SAML SP x509 certificate when it’s near expiration

3.16.1
SYM-6777 - Add free disk space to runtime properties

3.16.2 (Pro)
SYM-6795 - Insight - check use of MS SQL datetime data type to adjust MS JDBC driver
SYM-6796 - Add advanced registration options to the Deploy Wizard’s Endpoint Summary screen
SYM-6813 - On the Deploy Wizard’s Endpoint Summary screen, indicate how good each endpoint’s connection is

3.16.2
SYM-6820 - Run compact script on shutdown H2

3.16.3 (Pro)
SYM-6874 - Make it possible to import a CA certificate on the client node registration screen
SYM-6887 - On the Configure Canvas' Define Endpoint screen, in the Oracle Basic tab, rename Database Name & add field for SID/Service Name
SYM-6892 - SparkSQL support as a load-only, target platform
SYM-6906 - Databricks support as a load-only, target platform

3.16.3
SYM-6872 - Add a JSON transform type
SYM-6883 - Capture TRUNCATE table (schema-level) events in Oracle database

3.16.4 (Pro)
SYM-6903 - Log Miners now support conditions specified in sync_on_EVENT (same expressions as the Column Match router)
SYM-6939 - Add an insight to recommend lowering the transport.max.form.keys parameter based on log messages
SYM-6978 - Add a Send → CA Certificate button to the Manage Nodes screen

3.16.4
SYM-6882 - Capture TRUNCATE table events in PostgreSQL database
SYM-6915 - For nodes that initiate communication, add a parameter for the maximum outgoing form post limit

3.16.5 (Pro)
SYM-6991 - Add a monitor that detects a backlog of PostgreSQL Write-Ahead Logging (WAL) changes that aren’t mined yet
SYM-6992 - Add a SEVERE monitor for when the JVM runs out of memory
SYM-6996 - Add a Send Table Schema button to the Manage Outgoing Batches screen’s Change menu to resolve missing target table errors
SYM-7002 - SSL certificate import wizard and trust checkup
SYM-7009 - Add a console user preference for the default screen to display under the Configure tab
SYM-7010 - Notification can apply to specific monitors

3.16.7 (Pro)
SYM-7074 - When importing a new CA via the Import Certificate Wizard, provide an option to send the imported certificate to remote nodes
SYM-7077 - Add ability to import SSL cert from symconsole command line tool
SYM-7079 - The cluster-test (symconsole subcommand) tests remote node’s load balancer and network latency

3.16.7
SYM-7040 - Add support for the sql_variant column type (in MS SQL Server)

3.16.9
SYM-7220 - JavaJob.java already generates the class structure and invokes the doJob method. Users only need to implement the doJob logic, not the full class. This behavior should be clearly reflected in the UI and documented accordingly.

3.16.10
SYM-7277 - Add PostgreSQL support for BYTEA data type with conflict resolution
SYM-7302 - Block processing of a load request when SyncTriggers job is running

3.16.12
SYM-7015 - DDL capture support for cross platform

3.16.14 (Pro)
SYM-7570 - Add debug logging to help users troubleshoot integrations with their OAuth provider

Improvements

3.16.0 (Pro)
SYM-2338 - Bulk Extract for MSSQL
SYM-6436 - Change how bulk loaders determine when to flush their data
SYM-6444 - Improve how bulk loader flag is set and how bulk loaded percentage is calculated
SYM-6466 - Adding File Sync Service for Azure Blob Storage
SYM-6549 - Process panel able to interrupt if thread is available
SYM-6551 - Bulk export for SQL Server and Sybase ASE
SYM-6585 - Postgresql binary mode for COPY statement for bulk loads
SYM-6696 - Max Batch Size insight shouldn’t check reload channels

3.16.0
SYM-6244 - Upgrade H2 library to 2.2
SYM-6429 - Upgrade dependencies to latest versions
SYM-6537 - Data gap detector should refresh cluster lock
SYM-6577 - Enable acceptance of cookies by default for compatibility with load balancers
SYM-6616 - Save column references as numeric values for faster look-up in AbstractDatabaseWriter.getRowData()
SYM-6625 - Update User Guide with Upgrade and Rollback recommendations
SYM-6691 - Skip querying of self-referencing foreign key child levels if constraints are deferred
SYM-6692 - Prevent logging of secrets in symadmin and wrapper
SYM-6695 - Increase the default max batch size for the reload channel
SYM-6734 - Multi-threaded routing by channel enabled by default

3.16.1 (Pro)
SYM-6767 - Sign SAML requests with SHA-256 instead of SHA-1
SYM-6782 - Add verbiage to the license key screen to explain how to get a license key
SYM-6785 - On the Define Endpoint screen, change the "Endpoint" field’s label to "Select New or Existing Endpoint"
SYM-6787 - During deployment, the Deploy Wizard should create engines in parallel

3.16.1
SYM-6678 - Support INCLUDE non-key columns for indexes in Postgres

3.16.2 (Pro)
SYM-6644 - Upgrade chartjs (Chart.min.js)
SYM-6726 - Request a new Compare and Repair job remotely
SYM-6727 - Include primary key transforms in the Compare and Repair process
SYM-6790 - Allow sorting of more columns on Outgoing Loads screen
SYM-6801 - In the Transform Column Details dialog, the variable transform options should be sorted alphabetically
SYM-6806 - In the Configure Canvas' sidebar, update the styling of the progress stepper to clarify which step is the current step
SYM-6807 - In the Configure Canvas' transform tables dialog, draw dashed lines between the tables to indicate the default mapping
SYM-6808 - In the Configure Canvas' transform dialogs, make the column and table names on each side the same width
SYM-6824 - Batch fails with BadPaddingException and keeps retrying
SYM-6825 - Service and commands hang on Linux waiting for /dev/random
SYM-6828 - On the Deploy Wizard’s Endpoint Summary screen, display which deployed endpoint is the root registration server
SYM-6829 - Add tooltips to buttons to indicate the specific action that will be taken
SYM-6831 - Add a batch.outgoing.tosend.offline.count to runtime-stats in the Support Snapshot
SYM-6835 - Show cancelled load error message to user on load detail screen
SYM-6841 - Compare tables when columns are renamed on target
SYM-6843 - After configuring tables for the first time, the Load Data Wizard pops up to say that capture isn’t ready without any context
SYM-6844 - Resubmit of compare requests
SYM-6851 - Open active compare request automatically
SYM-6858 - When sending an outgoing load via the Load Data Wizard, have the Initial Load Queue job run immediately
SYM-6859 - Show future compare request and when they run
SYM-6860 - In the web console, replace "trigger" verbiage with "capture" verbiage
SYM-6863 - Log miner should check current SCN & if it’s less than the next SCN in sym_context, reset it to the current SCN & log an error
SYM-6864 - Compare and repair with before and after view
SYM-6868 - Compare should warn about unsupported routers

3.16.2
SYM-6705 - DataExtractorService.transferFromStaging should delete staged file if fails to decrypt staging file
SYM-6752 - Capture of DDL changes and delivery to the target should cause sync triggers at the target node after executing the SQL event
SYM-6793 - The symadmin import-config command should provide a better error message when it lacks the permissions to import a CSV file
SYM-6822 - Add sym_node_host_job_stats to snapshot
SYM-6826 - Add a batch.outgoing.tosend.offline.count to runtime-stats in the Support Snapshot
SYM-6850 - Extract error should be recorded on outgoing batch
SYM-6854 - Add console_table_stats to snapshot
SYM-6865 - Run sync-triggers on SQL events for Create/Alter DDL changes
SYM-6866 - Upgrade gradle to 8.14

3.16.3 (Pro)
SYM-6846 - Accelerate PostgreSQL log miner with bulk inserts
SYM-6867 - Update the deployment progress bar with endpoints' uninstallation progress
SYM-6870 - Make the installer prevent the user from installing on top of an existing installation
SYM-6889 - Log miner batch mode to capture changes
SYM-6891 - When adding tables to replication via the web console, add foreign key parent tables and tell the user
SYM-6894 - Replace the references to AI in the Insight Manager and the Insights Dialog
SYM-6895 - On the Configure Canvas' Subset Data screen, when there are no subset rules, replace the question mark icon with an info icon
SYM-6896 - On the Configure Canvas' Subset Data screen, expand the first 3 subset rule layouts by default
SYM-6897 - Compare repair exclude surrogate keys
SYM-6899 - Add blocked batch count to snapshot
SYM-6900 - Add license info to snapshot
SYM-6905 - Statistics panel extrapolation of CDC rows
SYM-6908 - On the Deploy Wizard’s Configuration Summary screen, group configuration changes by the source and target endpoint
SYM-6909 - Db2 iSeries AS400 Log Mining support for graphic columns and empty decimals
SYM-6913 - Add variable names to the method signatures within the Java router and Java load filter script editors
SYM-6921 - DB2 iSeries AS400 Log miner support for tables without a primary key but has a unique key

3.16.3
SYM-6855 - Acknowledge the registration batch and record it in sym_registration_request
SYM-6862 - Remove trailing slash from sync URL
SYM-6869 - Log a message when the outgoing.batches.max.to.select parameter limits the number of batches selected
SYM-6871 - Skip purging inactive trigger histories still referenced by sym_data (Purge Incoming job)
SYM-6873 - Update the Server Migration section of the User Guide to mention that the db directory must be copied to the new server
SYM-6884 - Snapshot export config as separate CSV
SYM-6893 - On import of config or auto.config.registration.svr.sql.script, make sure node group for current node exists
SYM-6911 - Add engine and log variables to Java router

3.16.4 (Pro)
SYM-6918 - In Configure → Parameters show that parameter changed in engine file
SYM-6920 - On the Configure Canvas, add an indicator to the link when there are transforms configured
SYM-6923 - Make multi-line info-level log messages on the Manage Logging screen easier to read in dark mode
SYM-6924 - In the Configure Canvas' Column Transform Details dialog, hide the Column Transform Order field if there’s only one transform
SYM-6925 - Make the Configure Canvas' Transform Columns dialog shorter so that the Transform dialog’s header is visible in the background
SYM-6926 - Make the rest of the web console use the same kind of filtering as the Configure Canvas
SYM-6927 - In the Configure Canvas, prevent the user from dragging an endpoint to a part of the canvas that isn’t visible
SYM-6929 - Add ability to resolve batches in error from the batch detail popup’s Resolve Data tab when opened via the Load Details screen
SYM-6931 - When the user switches screens, refresh the error badge in the top right corner of the web console
SYM-6932 - Display the error message, SQL code, and SQL state when viewing the details of a batchError monitor via the Active Errors dialog
SYM-6934 - Add a console event and log message for when the user restarts the SymmetricDS service via the web console
SYM-6938 - Make the web console leave the source column blank for a transform column with a type that doesn’t use the source value
SYM-6941 - On the Load Details screen, add tooltips to display the batch count for each table
SYM-6942 - On the Load Details screen, add a tooltip that displays the error message for the batch in error
SYM-6943 - Combine the Load Details screen’s queries for complete and incomplete tables into one query
SYM-6949 - Add an explanation of how tables are counted for licensing to the pro user guide

3.16.4
SYM-6933 - Add number of entries in sym_file_snapshot to support snapshot
SYM-6936 - In the snapshot, move the system batches from outgoing_batch_ok.csv and incoming_batch_ok.csv into separate files
SYM-6947 - Map the MySQL INT UNSIGNED data type to BIGINT
SYM-6953 - Support capture for SAP Hana
SYM-6956 - Sybase alter table locking not called at startup
SYM-6957 - Add a unit test for HttpTransportManager, especially sendAcknowledgement()
SYM-6976 - Push back off max bytes to sync when missing acks
SYM-6988 - Add extension point to handle HTTP connections

3.16.5 (Pro)
SYM-6788 - In the Configure Canvas, move the check for tables that do not exist to deployment time
SYM-6979 - Set up gitattributes for Git consistently update line endings for Windows and other file systems
SYM-6995 - Detect changes in startup parameters affecting database objects
SYM-6999 - Display a warning when the user has undeployed changes in the Configure Canvas and they click on any other tab
SYM-7012 - Avoid creating multiple node-export*.csv files in the tmp subdirectory

3.16.5
SYM-1461 - dbexport --sql column filter
SYM-6971 - Preserve one week of stats in the sym_console_table_stats and sym_node_host_stats tables
SYM-6975 - Set up gitattributes for Git consistently update line endings for Windows and other file systems
SYM-6980 - When the registration server starts up, it should set its own sym_node_security row’s registration_enabled flag to 0 if it’s 1
SYM-6982 - Create unit test for MySqlDdlReader.DetermineExtraColumnInfo
SYM-6990 - Detect when PostgreSQL version supports CreateOrReplace command and set dbInfo.TriggersCreateOrReplaceSupported property
SYM-7000 - Cache the lists of table names in each catalog/schema in the DDL reader
SYM-7008 - Allow other threads to access the node channel cache while it’s being refreshed

3.16.6 (Pro)
SYM-7011 - Improve node connection test dialog
SYM-7025 - Add a parameter for OAuth to customize what claim to look for role information in
SYM-7026 - Login screen should always be shown when an engine has been created

3.16.7 (Pro)
SYM-7050 - Show detailed error messages in Staging Performance Test dialog when task fails
SYM-7063 - On the Configure Parameters screen, when targeting a non-registration server node, filter out parameters that haven’t been set
SYM-7064 - On the Connect Database Wizard’s "Choose the Node’s Name" screen, widen the Name field
SYM-7065 - When adding a new channel via the Configure Channels screen, leave the Queue Name field blank by default
SYM-7069 - Prevent screens in the web console from unnecessarily creating files in the /tmp subdirectory

3.16.8 (Pro)
SYM-7128 - Slow SQL Server log mining when using $(targetExternalId) variable

3.16.8
SYM-7100 - Speed up the sending of deferred constraints and indexes
SYM-7107 - Support snapshot should group captured and parsed batch files in a sub-folder
SYM-7119 - Better input sanitization
SYM-7126 - Add logging when a column name comes back as null after reading metadata
SYM-7144 - Add index on load_id to outgoing_batch table to prevent table scans
SYM-7149 - SQL Server allow config to not query for compressed, filtered, and include columns on indexes
SYM-7152 - Limit amount of time the purge job spends on stranded data

3.16.9 (Pro)
SYM-7217 - Move login screen notifications to the center of the screen
SYM-7218 - Automatically hide notifications after 30 seconds
SYM-7221 - Prevent row count statistics from being extrapolated until the node has been registered for 24 hours
SYM-7230 - Add database icons to the nodes drop-down

3.16.9
SYM-7173 - Save hostname on startup and log how it was obtained
SYM-7236 - Include sym_console_role and sym_console_role_privilege in snapshot
SYM-7437 - Support for File Sync on MSSQL to support ntypes for file names

3.16.10 (Pro)
SYM-7200 - S3 Upgrade to AWS SDK2 with MinIO Support
SYM-7240 - Cleanup image on 3.16 markdown file on public Docker site

3.16.10
SYM-7207 - Add support for BYTEA column type in PostgreSQL bulk loader PGCOPY
SYM-7281 - Add target.db.delimited.identifier.mode parameter to control quoted identifiers

3.16.11
SYM-7318 - Add support for BINARY column type to MySQL Logminer
SYM-7326 - Add support for the BIT column type to MySQL Log Miner
SYM-7327 - Limit reservation time for newly connected node
SYM-7362 - Support extended ASCII characters for MySQL databases using non-unicode collation
SYM-7363 - Release Notes: handle issue back ports and forward ports

3.16.12 (Pro)
SYM-7005 - BigQuery Enhancements
SYM-7292 - Log a Warning for all disabled essential channels
SYM-7443 - Upgrade Spring Boot to latest 3.5.12 version

3.16.12
SYM-7418 - Support SET column type on MySQL
SYM-7420 - Emphasize Group ID in the Configuration Export section of docs
SYM-7503 - Add a new Custom Options parameter to append to the OAuth2 request URL
SYM-7506 - Allow routers that only handle DML to handle the "R" reload event type

3.16.13 (Pro)
SYM-7521 - Deploy Wizard UI: Highlight license key validation messages

3.16.13
SYM-7513 - NullPointerException in AbstractDatabaseWriter when BeanShell script filter does not implement handlesMissingTable()

Bug Fixes

3.16.0 (Pro)
SYM-6745 - RabbitMQ Errors when "data_loader_type" is bulk

3.16.0
SYM-6351 - Text and icons disappear in SQL Explorer TreeGrid when switching nodes
SYM-6663 - Logging of exceptions on data load can show values used in the wrong order when conflict resolution is in play

3.16.1 (Pro)
SYM-5506 - Remove productionMode context parameter in web.xml
SYM-6748 - RabbitMQ should make "username" and "password" required fields
SYM-6749 - If user enters RabbitMQ username or password incorrectly RabbitMQ will fail
SYM-6753 - Read-only users can run “Stage Management” job from Manage → Staging Area screen
SYM-6754 - Read-only users can edit Parameters via overrides
SYM-6755 - Read-only users can save SAML configuration
SYM-6760 - Postgres binary bulk loader fails to parse times with 4+ digits of precision and timestamps with 4, 5, or 7+ digits of precision
SYM-6771 - RabbitMQ fails to connect when using the Connect Database wizard
SYM-6783 - Exasol icon doesn’t work in dark mode
SYM-6784 - The Deploy Wizard doesn’t display the Time-Based screen when adding new tables to an existing time-based endpoint
SYM-6786 - On Outgoing loads screen, when sorting by Extract, Transfer, and Load when populated with millis, it doesn’t sort anything
SYM-6791 - On the Manage Incoming/Outgoing Batches screens, filtering by a status of error can miss some batches in error

3.16.1
SYM-6722 - Purge of batches before data causes appearance of stranded data
SYM-6797 - Dbfill uses values too large for money data type on sql-server
SYM-6798 - Sybase ASE unitext error when exceeding 8192 characters
SYM-6800 - Old heartbeat batches syncing old heartbeat time

3.16.2 (Pro)
SYM-6802 - Some images in the SymmetricDS Pro 3.16 User Guide are broken
SYM-6803 - On the Canvas, the notification that opens after clicking "Details" before first deployment stays open after clicking elsewhere
SYM-6804 - In the Configure Canvas' transform columns dialog, the legend’s header text sometimes wraps to a second line
SYM-6805 - On the Configure Canvas, selecting a link that can’t be configured and then selecting one that can causes unexpected behavior
SYM-6810 - If no threads available, compare requests can cause multiple compare statuses to process in loop
SYM-6814 - Initial load fails with DB concurrent error
SYM-6815 - Detect transport issues during Compare & Repair and retry automatically
SYM-6817 - SQL Server change tracking can replicate data twice or in different order
SYM-6819 - Explore DB Compare should use target platform when using log mining
SYM-6823 - A FileNotFoundException can occur when deploying multiple endpoints at once
SYM-6840 - Can’t access license screen if engines fail to start
SYM-6842 - Dashboard customizations mess up size of dashboard
SYM-6849 - SymmetricDS Control Center does not come up on a Mac
SYM-6853 - Disallow access to WEB-INF
SYM-6857 - Upgrade chartjs and remove momentjs

3.16.2
SYM-6461 - Blob fields and Firebird 4 or 5
SYM-6779 - Postgresql DDL trigger fails when sym_trigger_hist is located in another schema
SYM-6827 - ExtractDataReader support from target platform
SYM-6830 - NPE when processing table renaming transform (without columns)
SYM-6832 - Unknown exceptions from registration not passed to listeners
SYM-6834 - Custom parameters and parameters with no default do not show up in parameters-changed in the snapshot
SYM-6836 - Fail startup if extensions XML doesn’t initialize Spring context
SYM-6838 - Fails to cancel unprocessed load, stuck in loop
SYM-6847 - Postgres money data type error from initial load
SYM-6861 - Upgrade Spring, Swagger, Commons, and Vaadin libraries

3.16.3 (Pro)
SYM-6845 - MsSql Bcp Command has issues when using a default instance with a service name other than "MSSQLSERVER"
SYM-6898 - Multiple repair threads cause failure to rename staging resource
SYM-6912 - In the Edit Java Router dialog, when the editor is empty, clicking a variable or snippet does not insert it into the editor
SYM-6914 - The method signatures within the Java router and Java load filter script editors contain links to pages that don’t exist

3.16.3
SYM-6876 - SQL Server DDL reader can remove too many outer parentheses from a default value
SYM-6877 - SQL Server DDL reader can cause default values to become invalid by attempting to unescape single quotes
SYM-6879 - Postgres Log Mining permissions should check creation/dropping of logical replication slots instead of querying for roles
SYM-6881 - Deadlock from updating common batch stats in clustered environment
SYM-6886 - Null pointer exception when cancelling all loads for node
SYM-6890 - Default the routing.data.reader.use.multiple.queries parameter to false & document that it can cause data to be out of order
SYM-6901 - Init of engine fails to query non-existent sym_parameter table on DB2 for i (AS400)
SYM-6904 - Missing maxFormKeys setting causes "form with too many fields" error
SYM-6910 - Ready queues prevents load from completing

3.16.4 (Pro)
SYM-6116 - Creating node using import configuration does not keep the non-default values for the default channels
SYM-6948 - The Deploy Wizard throws an IllegalFormatConversionException when the bcp or SQL*Loader test fails with a nonzero return code
SYM-6950 - A NullPointerException can occur when closing the Configure Canvas' sidebar with the Define Endpoint screen open
SYM-6951 - A NullPointerException can occur when saving the Configure Canvas' Define Endpoint screen
SYM-6952 - A NullPointerException can occur when clicking the Test → Database button on the Manage Nodes screen
SYM-6959 - SQL-Server log miner goes back to older change version in loop
SYM-6964 - Resetting the Configure Canvas throws an exception if the database returns a java.sql.Timestamp for a transform’s create time
SYM-6973 - The connection test on the Manage Nodes screen receives a 659 response and does not work
SYM-6974 - Define Endpoint screen displays empty error message on connection timeout
SYM-6983 - The Configure Canvas' Add Tables dialog states that foreign key parent tables are missing when they were just selected

3.16.4
SYM-6944 - Firebird query error when use of reserved word for column alias
SYM-6945 - Add overrides for isBlob and isClob for AseDatabasePlatform
SYM-6955 - When "on update CURRENT_TIMESTAMP" is not the first part of the extra column info it does not get picked up correctly
SYM-6961 - DBCompare throws a NullPointerException when one database is missing a row with a null value for a UNIVARCHAR column
SYM-6963 - DBCompare can throw a NullPointerException when the source table has unitypes and there are more source rows than target rows
SYM-6972 - A NullPointerException can occur during registration if the config channel cannot be found
SYM-6977 - Oracle XMLTYPE columns get incorrectly flagged as generated
SYM-6985 - Sybase ASE Unitype Fixes

3.16.5 (Pro)
SYM-6474 - Internal Error when refreshing page on Configure-Parameters screen
SYM-6628 - Pressing Batches button on Incoming Loads screen shows batches for all loads with same load ID
SYM-6922 - Uninstall node action does not remove DDL (and truncate) capture function

3.16.5
SYM-2247 - dbexport oracle date type with "default sysdate" not compatible with other databases
SYM-5074 - CSV to database replication is not working
SYM-6981 - Reload batches from auto resolver get foreign key error
SYM-6987 - Suppress first error when auto-resolving lines in batch (foreign key or deadlock), escalate on second error for the same line
SYM-7001 - Client node left in "registration pending" after registration complete

3.16.6 (Pro)
SYM-7014 - When you try to bulk edit conflicts an error occurs
SYM-7035 - An IllegalArgumentException can occur when the user is sent to the Manage Outgoing Loads screen after creating a load
SYM-7037 - A NullPointerException can occur when clicking the Add transform button on the Configure Canvas' Transform Data screen

3.16.6
SYM-7018 - Global transform script was shared across multiple co-hosted engines
SYM-7024 - Fix java.lang.IllegalArgumentException: No enum constant org.jumpmind.db.sql.SqlTemplateSettings.JdbcLobHandling.PLAİN
SYM-7027 - Retrofit 0006621 into 3.16 NVARCHAR(MAX) and VARCHAR(MAX) columns get modified when another column is updated
SYM-7034 - Leading ZWNBSP character gets lost when replicating unitype data from Sybase ASE
SYM-7047 - Update libraries from dependency scans

3.16.7 (Pro)
SYM-7051 - Adjust current directory in JUnit unit tests
SYM-7053 - SymmetricDS depends on a different version of JSQLParser than the Oracle log miner
SYM-7054 - When a log-based Oracle node is connected to a PDB, the Oracle log miner leaves connections connected to the CDB
SYM-7059 - A NullPointerException can occur when attempting to open the Settings dialog
SYM-7062 - On the Manage Incoming Batches and Manage Outgoing Batches screens, filtering by "Ignored" status doesn’t filter out OK batches

3.16.7
SYM-7055 - Replace deprecated code after dependency update
SYM-7057 - Error suppression of batch data conflict only for older Postgres
SYM-7061 - The $(sourceExternalId) and $(targetExternalId) variables don’t get replaced when included in a router’s target catalog/schema
SYM-7083 - When sending a table schema containing a LONGVARBINARY column to an H2 2.x node, the table always gets rebuilt
SYM-7084 - Check trigger.capture.ddl.check.trigger.hist parameter at startup
SYM-7086 - Registration fails when a console role exists with a role ID that comes before its parent role ID alphabetically

3.16.8 (Pro)
SYM-7094 - default.values.to.translate not being applied for bit and Boolean types on Postgres
SYM-7102 - Appendix I documentation errors
SYM-7103 - Adding a SQL Server table with a non-default catalog and a default schema via the Canvas results in a trigger creation failure
SYM-7105 - Importing a configuration SQL file from 3.15 or earlier fails when it includes sym_design_diagram or sym_diagram_group
SYM-7111 - Setup panel on dashboard only shows check if initial load from registration server to another node has been started
SYM-7123 - PostgreSQL bulk loader doesn’t decode binary data
SYM-7125 - Fix Symmetric UI "freezing" on outgoing batch screen
SYM-7131 - An unregistered node’s web console displays the login screen instead of the node registration screen
SYM-7142 - Sort table triggers and routers on the create new table router screen

3.16.8
SYM-7036 - A database platform’s case sensitivity is not taken into consideration when checking whether an index needs modified
SYM-7097 - Route data should handle missing Node entries from the cache
SYM-7098 - Symmetric does not sort by FK references when sending an Initial load
SYM-7112 - Vulnerability CVE-2025-7962 Severity: MEDIUM Package: org.eclipse.angus:smtp
SYM-7139 - Ready queues header should be case insensitive

3.16.9 (Pro)
SYM-7169 - MariaDB SQL Explorer does not successfully run select statements
SYM-7170 - Tables are being counted twice in canvas against license.
SYM-7171 - MSSQL log based will not allow a data refresh setup for a table without a PK
SYM-7172 - Canvas was not allowing user to add tables.
SYM-7188 - The Deploy Wizard throws a NullPointerException if an endpoint’s sync URL is null
SYM-7189 - A NullPointerException can occur during deployment if a router’s group link is null
SYM-7197 - Kafka endpoint does not filter DELETE events for internal tables
SYM-7208 - RabbitMQ endpoint should ignore system batches
SYM-7219 - On the Monitors Dashboard panel, long monitor names can cause text to extend out of the div
SYM-7232 - On the Manage Outgoing/Incoming Loads screens, the load detail doesn’t automatically open if the previous load had the same ID as the current load
SYM-7238 - Fix Java incompatibility between gradle plugin and symmetric

3.16.9
SYM-7135 - H2 database is missing SYM_DATA_DATA_ID_SEQ sequence after upgrade from version 3.14 or earlier
SYM-7186 - A NullPointerException can occur when resolving a unique key violation on a table that is referenced by a table in a different schema
SYM-7195 - When not using trigger-based capture, the cache.table.time.ms parameter doesn’t apply to the application table cache
SYM-7209 - Load is running, non-reload channels are still synching
SYM-7234 - Log message for IgnoreRowException thrown by custom BSH transform should be downgraded to DEBUG level
SYM-7237 - A NumberFormatException occurs when sending a load involving a SQL Server time column over a subselect or Beanshell router

3.16.10 (Pro)
SYM-7243 - Cannot edit transformations in the canvas
SYM-7294 - MSSQL bulk loading allow charset to be used while writing to staging configurable

3.16.10
SYM-7206 - JDBC Bulk Loader fails when number of rows is exactly same as channel’s max batch size
SYM-7245 - MySQL log-based CDC not replicating to target
SYM-7256 - db.master.collation parameter generates invalid SQL - missing COLLATE keyword
SYM-7276 - Integration test fails for MySQL - wrong number of rows in each batch
SYM-7280 - TriggerRouterService.getActiveTriggerHistoriesFromCache() doesn’t filter out inactive trigger histories
SYM-7300 - Exit FK Auto resolve if multiple passes determine source record was deleted
SYM-7321 - Artifacts for modules need to be reviewed for the specified location

3.16.11 (Pro)
SYM-7332 - The BeanShell transform editor has data variables for OLD_<COLUMN_NAME> but they’re undefined
SYM-7338 - "New User" screen typo
SYM-7342 - PostgreSQL Drop Column DDL fails on target node

3.16.11
SYM-7341 - Multiple Java transforms on the same table do not work correctly
SYM-7358 - Format error in Oracle appendix
SYM-7368 - Table load request generates multiple extracts on MS SQL Server

3.16.12 (Pro)
SYM-7334 - When editing a transform column, selecting a bsh transform type and switching to a different transform type makes it impossible to type a period into the expression field
SYM-7398 - Cross-platform DDL capture for SQL Server incorrectly captures a DROP TABLE statement as a create event
SYM-7409 - TransformDataScreen: Map Columns shows '(no source column\!)' for all columns when source schema differs from target routing schema (DB2)
SYM-7432 - NPE in ProExtractDataReader.nextBatch() when Table Group Hierarchy is configured
SYM-7438 - Table Group Hierarchy ignores included_column_names, causing column count mismatch on load
SYM-7447 - A NotJdbcDriverException occurs when creating a Kafka node via the Connect Database Wizard
SYM-7498 - An IndexOutOfBoundsException can occur on one of the batch screens

3.16.12
SYM-7022 - Deployed WAR file to application server (Tomcat) does not handle single engine deployment
SYM-7412 - A UniqueKeyException can occur during routing after correcting overlapping gaps
SYM-7467 - A SqlException can occur during routing or purge when a trigger is configured with a wildcarded source catalog name
SYM-7495 - MySQL create table with auto increment and composite key

3.16.13 (Pro)
SYM-7552 - The Postgres bulk loader throws a NullPointerException when the runtime database is H2

3.16.13
SYM-7533 - Import Config needs to write to files in tmp directory differently
SYM-7541 - Database connection pool exhaustion in Routing job
SYM-7542 - Watchdog should not unregister nodes in certain cases
SYM-7544 - Initial load by reload channel includes identically named tables from multiple schemas
SYM-7549 - A NullPointerException can occur when writing to Kafka using AVRO format with Confluent Schema Registry

3.16.14 (Pro)
SYM-7325 - Push registration doesn’t complete for client nodes added via the web console or REST API
SYM-7560 - Fix dependency license check failure for repackaged java-saml artifacts
SYM-7622 - Login banner is blank when previous.login.info.notifications.enabled equals true

3.16.14
SYM-7589 - Prevent accumulation of Heartbeat batches for offline nodes when other nodes are healthy
SYM-7602 - OAuth2/OIDC login silently fails with blank page when sync.url does not include engine name
SYM-7607 - Prevent Zip Slip Vulnerability
SYM-7608 - Prevent Path Traversal Vulnerability

3.16.15 (Pro)
SYM-7628 - Update Vaadin framework version to 24.10.6
SYM-7636 - Save table event statistics even if there were no observations

3.16.15
SYM-7630 - Update PostgreSQL JDBC driver version to 42.7.11
SYM-7632 - Update swagger-ui library to 5.32.6+ to improve security

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

sym_console_user_preference (Pro)

New Columns

SYM_EXTRACT_REQUEST
Column Name Description

byte_count

The number of bytes that were transferred to the target for this table

conflicted_rows

The rows in this table that went into conflict when loaded to the target

SYM_FILE_SNAPSHOT
Column Name Description

external_file_data

A field that can be populated for use by routing.

SYM_JOB
Column Name Description

implementation

Fully-qualified class name of a built-in job to extend. When set, takes precedence over job_type and job_expression. Only com.jumpmind.symmetric.job.DataRefreshJob is currently supported (Pro only).

SYM_NODE_CHANNEL_CTL
Column Name Description

target_node_id

Unique identifier for a target node for which this channel will be suspended and/or ignored.

SYM_NODE_GROUP_LINK
Column Name Description

description

An optional description of this link.

SYM_NODE_HOST_CHANNEL_STATS
Column Name Description

data_received

The number of rows that were received during this time period.

data_bytes_received

The number of bytes that were received during this time period.

data_min_create_time

The minimum create time of a data row that was routed during this time period.

data_max_create_time

The maximum create time of a data row that was routed during this time period.

SYM_NODE_HOST_STATS
Column Name Description

data_gap_count

Number of non-expired data gaps during this period.

data_unrouted_count

Estimated number of unrouted data rows during this period.

SYM_OUTGOING_BATCH
Column Name Description

data_min_create_time

The minimum create time of a data row contained within this batch.

data_max_create_time

The maximum create time of a data row contained within this batch.

SYM_TRIGGER
Column Name Description

capture_changes_only

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.

SYM_TRIGGER_ROUTER
Column Name Description

data_refresh_job_name

The name of the data refresh job assigned to this trigger router. Usually for tables where typical trigger, log, or time-based capture is not available. The value 'CDC' (default) indicates the table uses change data capture and is ignored by all data refresh jobs.

Modified Tables

SYM_NODE_CHANNEL_CTL
  • Added primary keys: target_node_id

SYM_TABLE_RELOAD_STATUS
  • 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

ase.bulk.load.staging.charset (Pro)

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: )

awssqs.access.key.id (Pro)

Your AWS Access Key ID. (Default: )

awssqs.format (Pro)

Specify the output message format. Possible values are { JSON | XML | CSV } (Default: )

awssqs.message.by (Pro)

The following property determines how messages will be sent. Possible values are { BATCH | ROW } (Default: )

awssqs.queue.by (Pro)

The following property determines what queues will be used to load data to. Possible values are { TABLE | CHANNEL | USER } (Default: )

awssqs.queue.name (Pro)

The queue name you wish to configure with SymmetricDS. If you enter a value for this field, it will override the "Queue By" selection. If you leave this field blank, queue(s) will be created based on the "Queue By" field. (Default: )

awssqs.region (Pro)

The AWS region your queue is located in. (Default: )

awssqs.secret.access.key (Pro)

Your AWS Secret Access Key. (Default: )

awssqs.session.token (Pro)

Your AWS SQS session token. (optional) (Default: )

awssqs.url.queue (Pro)

The URL of the AWS queue you want to load data to (optional). (Default: )

console.auth.oauth2.options (Pro)

Additional query parameters to append to the OAuth2 authorization request URL (e.g., prompt=consent&access_type=offline). (Default: )

console.show.pipelines.view (Pro)

Display a list of pipelines on the Configure Diagram instead of a network of endpoints. (Default: false)

console.user.preference.reload.timeout.ms (Pro)

The number of milliseconds console user preferences will be cached by the ConsoleUserPreferenceService before they are reread from the database. (Default: 600000)

db.pool.idle.timeout.millis

Maximum time (ms) a connection is allowed to sit idle in the pool (HikariCP only). This setting only applies when db.pool.min.idle is less than db.pool.max.active. Idle connections will not be retired once the pool reaches the minimum idle count. Whether a connection is retired as idle is subject to a maximum variation of +30 seconds and an average variation of +15 seconds. A connection will never be retired before this timeout elapses. A value of 0 means idle connections are never removed from the pool. The minimum allowed value is 10000 ms (10 seconds). Default: 600000 ms (10 minutes). (Default: 600000)

db.pool.keepalive.time

Controls how frequently the pool will attempt to keep a connection alive to prevent it from being timed out by the database or network infrastructure, in milliseconds. For HikariCP: this value must be less than the maxLifetime value. A keepalive will only occur on an idle connection. When the time arrives for a keepalive against a given connection, that connection will be removed from the pool, pinged, and then returned to the pool. The ping is one of either: invocation of the JDBC4 isValid() method, or execution of the connectionTestQuery. Typically, the duration out-of-the-pool should be measured in single digit milliseconds or even sub-millisecond, and therefore should have little or no noticeable performance impact. The minimum allowed value is 30000 (30 seconds), but a value in the range of minutes is most desirable. Default: 120000 (2 minutes) (Default: 120000)

db.pool.leak.detection.threshold

Amount of time (ms) a connection can be out of the pool before a message is logged indicating a possible connection leak (HikariCP only). A value of 0 disables leak detection. The minimum allowed value for enabling leak detection is 2000 ms (2 seconds). Default: 0 (disabled). (Default: 0)

db.pool.max.lifetime.millis

Maximum lifetime (ms) of a connection in the pool (HikariCP only). An in-use connection will never be retired; it is removed only after it is closed and returned to the pool. On a connection-by-connection basis, minor negative attenuation is applied to avoid mass-extinction in the pool. It is strongly recommended to set this value, and it should be at least several seconds shorter than any database or infrastructure imposed connection time limit. A value of 0 indicates no maximum lifetime (infinite lifetime), subject to db.pool.idle.timeout.millis. The minimum allowed value is 30000 ms (30 seconds). Default: 1800000 ms (30 minutes) (Default: 1800000)

db.pool.type

Set the DB connection pool type. Options include: "dbcp2" for Apache DBCP2, and "hikari" for HikariCP. Apache DBCP2 is the default. HikariCP is included in the SymmetricDS distribution and requires no additional dependencies. (Default: dbcp2)

file.sync.minio.access.key (Pro)

MinIO access key (Default: )

file.sync.minio.secret.key (Pro)

MinIO secret key (Default: )

file.sync.minio.url (Pro)

MinIO endpoint url (Default: )

file.sync.s3.url (Pro)

S3 Url to be used. Could be set when using LocalStack as s3 container and not AWS. (Default: )

file.sync.vfs.pass (Pro)

VFS password for file sync (supports URLs with ftp:// and sftp://) (Default: )

file.sync.vfs.user (Pro)

VFS user for file sync (supports URLs with ftp:// and sftp://) (Default: )

load.wizard.clear.table (Pro)

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)

log.miner.capture.user (Pro)

While mining the log capture the user attached to the transaction in the log and write to sym_data.external_data for downstream processing. Supported by AS/400 log miner. (Default: false)

mssql.allow.only.row.level.locks.on.runtime.tables (Pro)

Automatically update data, data_event and outgoing_batch tables to allow only row level locking. (Default: true)

mssql.bulk.load.staging.charset (Pro)

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: )

mssql.include.catalog.in.triggers (Pro)

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)

mssql.lock.escalation.disabled (Pro)

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)

mssql.metadata.query.for.compression.filters.includecolumns (Pro)

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)

mssql.trigger.execute.as (Pro)

Specify the user the SymmetricDS triggers should execute as. Possible values are { CALLER | SELF | OWNER | 'user_name' } (Default: caller)

mssql.trigger.order.first (Pro)

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)

mssql.use.ntypes.for.sync (Pro)

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)

mssql.use.snapshot.isolation (Pro)

Specifies if snapshot isolation should be automatically turned on. (Default: false)

mssql.use.varchar.for.lob.in.sync (Pro)

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)

oracle.jdbc.lob.handling (Pro)

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)

oracle.load.query.hint.parallel.count (Pro)

For initial load extracting data to specify the number of parallel processes to use while selecting data from a table (Default: 1)

oracle.sequence.noorder (Pro)

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)

oracle.sequence.noorder.nextvalue.db.urls (Pro)

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: )

oracle.template.precision (Pro)

This is the precision that is used in the number template for oracle triggers (Default: *,38)

oracle.template.precision.text.minimum (Pro)

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)

oracle.use.hints (Pro)

On Oracle, enables an index hint when selecting from sym_data using data gaps. (Default: true)

oracle.use.ntypes.for.sync (Pro)

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)

oracle.use.select.data.using.start.data.id.hint (Pro)

On Oracle, enables a full table scan hint when selecting from sym_data using the start data_id. (Default: false)

rest.writer.api.key (Pro)

Optional API key for sending data to a rest service. (Default: )

rest.writer.format (Pro)

The output format for data sent by the rest writer. Available options: JSON, XML (Default: JSON)

target.db.delimited.identifier.mode

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)

trigger.capture.ddl.send.table

Determines if the DDL captured will be the actual ddl run against the source or if a Create table event will be captured for the changed table. This allows cross compatibility where an add columnn syntax may vary from one dialect to another. By sending a full create or alter table it will naturally apply the proper alters to match the target. Currently implemented for Microsoft SQL Server only. See: trigger.capture.ddl.changes (Default: false)

Modified Parameters

cloud.bulk.field.quote (Pro)

The cloud based character used in bulk loading to be used when quoting fields (Old Default: �) (New Default: ¿)

routing.gaps.transaction.view.clock.sync.threshold

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)

transport.type

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)

oracle.template.precision

{REMOVED}

mssql.use.ntypes.for.sync

{REMOVED}

mssql.allow.only.row.level.locks.on.runtime.tables

{REMOVED}

mssql.trigger.execute.as

{REMOVED}

mssql.include.catalog.in.triggers

{REMOVED}

oracle.template.precision.text.minimum

{REMOVED}

oracle.use.ntypes.for.sync

{REMOVED}

mssql.use.snapshot.isolation

{REMOVED}

oracle.load.query.hint.parallel.count

{REMOVED}

mssql.trigger.order.first

{REMOVED}

mssql.use.varchar.for.lob.in.sync

{REMOVED}

oracle.use.transaction.view

{REMOVED}

mssql.lock.escalation.disabled

{REMOVED}

oracle.jdbc.lob.handling

{REMOVED}

oracle.sequence.noorder.nextvalue.db.urls

{REMOVED}

oracle.transaction.view.clock.sync.threshold.ms

{REMOVED}

oracle.sequence.noorder

{REMOVED}