Release v6
Overview
This is the first release of UNIFYConnect Sync Module v6 (previously UNIFYBroker/Plus). Upgrades to this version from UNIFYBroker/Plus v5.3 should follow the upgrade instructions.
Notable Changes
Between the latest version of v5.3 and v6.1.0, the following defaults have changed:
- The default behaviour in v5.3 was to consider all schema fields when generating link changes, even if the fields were not mapped. This resulted in extra change records being generated for processing even if they resulted in no change (due to no mappings). Upon upgrading to v6.1, this setting will be enabled automatically on migrated configuration.
- Review the documentation on links to determine whether this setting is required to be enabled.
- When processing entities in PowerShell tasks, the behaviour in v5.3 was to mark an entity as 'changed' for processing, whenever a value was set on the entity - regardless of whether the value was different to the previous one. This resulted in entities being processed or submitted to the connector as updated, even if no value had changed. For v6.1, a value comparison between the existing value and new value is run to determine whether the entity should be marked as 'changed'.
v6.1.195379
🚀 - 30/06/2025
- 🐛: Fixed an issue where a sync that resulted in no changes (adds/updates/deletes) would still attempt to call the target (adapter or locker) with an empty collection
- 🐛: Fixed an issue where SQL Server contexts would not correctly order multi-value values, resulting in incorrect change calculations
v6.1.193607
🚀 - 02/06/2025
- 🐛: Fixed an issue where PowerShell values were sometimes unpacked as if they were complex objects
v6.1.193605
🚀 - 02/06/2025
- 🐛: Fixed an issue where a baseline sync would not process entities when ProcessUnmappedChanges was set to true
- 🐛: Fixed an issue with the Sync Change viewer not highlighting changed fields
- 🐛: Fixed an issue where v5.3 imported link configuration would result in multiple timings being deleted if one of them was deleted
- 🔒: Bump dependencies
v6.1.192066
🚀 - 12/05/2025
- 🔧: Improve sync change processing to avoid unnecessary changes being generated
v6.1.0
🚀 - 05/03/2025
New Features
- ✨: Added support for comments on Link objects
- ✨: Added ability to perform single direction syncs on Links
- ✨: Added support for PowerShell components to read from the External Configuration value store
- ✨: Added support for requeuing of failed sync/provision operations
- ✨: Added 'forced' baseline option, allowing field priority to be ignored for a single operation execution
- ✨: Added configurable connection strength for joins, allowing control over join behaviour for anchor changes
- ✨: Added configurable join error behaviour, allowing control over sync behaviour if a subset of joins fail due to ambiguity conditions
- ✨: Added a view to display current and historical Sync Jobs
- ✨: Added ability to cancel pending Sync Jobs
- ✨: Added ability to cancel in-progress Sync Jobs prior to changes being persisted
- ✨: Added ability to clear Locker entities that have no connections through any Link
- ✨: Added option to generate changes for entities that have been disconnected, to allow other priority values to flow immediately
- ✨: Added ability to configure the maximum number of changes processed by an individual Sync Job
- ✨: Automatically merged Sync Jobs if the change count sum of jobs is less than the maximum change count configuration
- ✨: Added ability to selectively clear Locker entities
- ✨: Added ability to page through both target and source context entities in Link tasks
Enhancements
- 🔧: Converted to .NET 8 / .NET Framework 4.8
- 🔧: Migrated configuration format from XML to JSON
- 🔧: Updated audit decorators to only process activity when a service audit writer is configured
- 🔧: Updated web styling
- 🔧: Supported configuring a timeout on Link PowerShell Tasks being run
- 🔧: Improved Link changes processing to use a more reliable order for queued changes
- 🔧: Completely rewrote SQL data layer to remove legacy reflection/expression-based implementation and better align with PostgreSQL functionality and performance
- 🔧: Improved performance of origin lookups when processing field mapping priorities
- 🔧: Added support for ignoring Sync changes if the change was on an unmapped field
- 🔧: Improved creation of Sync Changes to avoid changes being registered that would not result in an actual entity change due to mapping direction or provisioning settings
- 🔧: Improved Sync Job feedback to better distinguish between a job being queued and a job being executed
- 🔧: Improved mapping processing to avoid processing fields that result in no value change while still correctly processing origin information
- 🔧: Improved performance of Link filters to reduce database impact and entity footprint impact through prefiltering
- 🔧: Improved performance of change record creation on baseline Sync execution
- 🔧: Overhauled Link connections view page to better represent connections between entities, and added ability to search connections
- 🔧: Improved Link join resolution processing to avoid redundant lookups during the Sync process
- 🔧: Improved the process for requesting schema on a Locker
- 🔧: Exposed DenySync status in Sync tasks, to know whether an entity was already denied in a previous task
- 🔧: Improved error information surfaced on Link task failure to help with debugging
- 🔧: Improved performance of Link processing
- 🔧: Improve performance of baseline sync generation
Removals
- ❌: Removed UI for configuring manual connections
Bug Fixes
- 🐛: Fixed an issue relating to excess Sync change resulting from change time precision
- 🐛: Fixed an issue where field priority was not respected on schema fields added after initial provisioning
- 🐛: Fixed an issue where multiple tasks delaying an entity would result in duplicate Sync changes being queued
- 🐛: Fixed an issue where an exception thrown during an incoming sync task would be logged multiple times
- 🐛: Fixed an issue where renaming a Locker schema field to one that already exists could result in a stuck service
- 🐛: Fixed inconsistent data processing behaviour between baseline and changes Sync operations, particularly around deprovisioning
- 🐛: Fixed an issue where log messages from provisioning tasks were missing details about the Link they belonged to
- 🐛: Fixed an issue where connections on entities pending deprovisioning may not always be removed
- 🐛: Fixed an issue where softly connected entities wouldn't be updated if their connection target changed when using the Connection Aware join strategy
- 🐛: Fixed an issue where sync job log messages would always be referred to as baseline and manually queued
- 🐛: Fixed an issue where disconnected or deleted entities would still have their values impact priority calculations
- 🐛: Fixed an issue where link configuration was being read from source more often than it needed, resulting in redundant file operations
- 🐛: Fixed an issue where DelaySync and DenySync settings would not work correctly during deprovision operations
- 🐛: Fixed an issue where delayed entity changes would not repeat on a baseline sync
- 🐛: Fixed an issue where statistics reporting for Sync jobs would not report the sync kind correctly
- 🐛: Fixed an issue where importing a schema for a Locker where imported fields already existed would throw an exception
- 🐛: Fixed an issue where information was incorrectly nested on the provisioning information API endpoints
- 🐛: Fixed an issue where setting a value on an entity in a Link PowerShell task would mark the entity as updated, even if the value was the same as the existing value on the entity
- 🐛: Fixed an issue where link operations could run even if the link was disabled
- 🐛: Fixed an issue where connections could be recreated in the database each time, even if the connection was the same.