Releases: tableau/tableau-migration-sdk
Releases · tableau/tableau-migration-sdk
release/5.2.0
What's Changed
New Features
- Enable ability to not overwrite existing users in group when migrating
- Use Site Info for Subscription Capability Check
Fixes
- Fixed subscription Python wrapper not exposing some properties (Issue #62)
- Fixed inconsistent directory casing in Python example application
- Work-around for the breaking API change in Tableau Cloud removing the
CreateRefreshMetrics
workbook capability.
Documentation
- Added documentation for the following config
Network.WorkbookContentLoggingEnabled
keyPreflight
section
Other Changes
- Package dependency updates
- Mac+Rider compatibility update
- Issues listed on the Github repo
Known Issues
- Unlike other content types, Custom Views cannot be filtered based on the Content Location of the base view.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
Full Changelog: release/5.1.1...release/5.2.0
release/5.1.1
What's Changed
New Features
- Migration of Embedded Credentials
- Migration of Subscriptions
- .NET 9 Support
- More readable manifests
- Constants for New Extract Refresh Permission Capability
- Configuration to not log workbook content
- Support for Migrating Users to Sites with Multiple IdP Configurations
- Logging to hooks
Fixes
- Made exception deserialization more robust
- Admin not found error
- Improve Project Mapping Error Message
- Default Project Permissions: Add
Virtual Connections
- Fixed TableauInstanceTypeNotSupportedException Deserialization
- Subscriptions: Create subscriptions XML de/serialization bug
- Fixed XML Parsing Errors in Workbooks Downloaded from Linux Tableau Servers
- View Mapping in Subscriptions
- Fixed System Project Migration When Assigned to Non-System Ownership
- Fixed embedded cred preflight check.
- Restored upsert logic on users and added manifest error when users cannot be licensed
- Removed exclusive auth type and IDP check and updated test
Documentation
- Embedded Credentials: Add troubleshooting section for missed pre-migration steps
- Troubleshooting section for legacy
Guest
users. - Add print_result module to Python documentation
- Change Python Docs Member order
- Fix print_result module in the Python Example app and use similar one in test app
- Added XML Transformer Sample
Other Changes
- OAuth Saved Credentials Simulation Testing
- Docs: Manage OAuth Embedded Creds troubleshooting sections
- Migration Analyzer
- Manifest Analyser command line args
- Manifest Analyzer quality of life improvements
- Manifest Analyzer output HTML page
- Fixes in Manifest Analyzer which broke the build
- Manifest Analyzer: Add top level manifest errors
- Refactor: Simplify and rename Http Handlers, NetworkLogger
- Subscriptions: Python Wrappers
- Docs: Improve config docs
- Docs: Migration SDK Terminology and config docs refactor (customer feedback)
- Improved logging and moved CleanServer code
- Update ManifestAnalyzer
- Added generic skip id filter
- Hackathon: Manifest Explorer
- Unlicensed groups can't have the license role in the request.
- Refactor: Add common interfaces and class for capability managers
- Subscriptions: Use common migration capability manager interfaces
- Embedded Credentials: Use common migration capability manager interfaces
- Custom Views: Stop using
exp
endpoint and update owner id when a custom view already exists at the destination - Added subscription transformer to DI
- Consistent User Response Auth Type Handling
Known Issues
- Unlike other content types, Custom Views cannot be filtered based on the Content Location of the base view.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
Full Changelog: tableau/migration-sdk@release/5.0.1...release/5.1.1
V5.0.1
What's Changed
Other changes
- Added a workaround to prevent migration errors when users already exist at the cloud destination.
- Updated copyright year to 2025
v5.0.0
What's Changed
Breaking Changes
- Removed Python 3.8 support
- Removing net6.0 and updated python to use net8.0
New Features
- Basic Progress Tracking: Added totals to Manifest partitions. You can now write
BatchMigrationCompleted
hooks to track the progress of a migrated batch of items. - Bulk Permission migration: Permissions now use the new bulk update API methods. This functionality replaces the previous delete and create mechanism. The change results in significantly fewer REST API calls and hence improved performance.
Fixes
- Fixed migration error when Extract Refresh tasks in Personal Spaces were found.
- Fixed Manifest Entry status when populated from a previous migration.
- Server to Cloud schedule improvements.
Documentation
- Removed Most Python.NET Interop Usage in Python Example Application
Other Changes
- Test app and logging updates
- Add correlation id to all http request/responses
Known Issues
- Unlike other content types, Custom Views cannot be filtered based on the Content Location of the base view.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
- Progress tracking in Python is limited out of the box compared to the one in C#.
Full Changelog: tableau/migration-sdk@release/4.3.0...release/5.0.0
v4.3.1
What's Changed
Fixes
- Fixed migration error when Extract Refresh Tasks in Personal Spaces were found.
- Fixed Extract Refresh listing when tasks of unknown content type exist
Known Issues
- Unlike other content types, Custom Views cannot be filtered based on the Content Location of the base view.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
v4.3.0
What's Changed
New Features
- Migration of Custom Views ⭐
- Earlier configuration validation so the failures are earlier and faster.
- User Agent string changes to put distinguishing info in the comment field of the user agent instead of a different product field using suffixes (Mozilla docs). The User Agent Comment is configurable.
Fixes
- Fix to the Workbook View publish functionality involving views. This fixes the XML
CommitWorkbookPublishRequest
so views are properly published. - Some Python Example App fixes.
- Some Python code snippet fixes.
- Fix to encrypt extracts if the server requires it.
- Fix HTML Error Responses not being Included in Exception.
- Minor fix to Python
requirements.txt
.
Documentation
- Example 'Getting Started' code samples are now also in the Migration SDK intro page.
- Information on how the Migration SDK is versioned
Known Issues
- Unlike other content types, Custom Views cannot be filtered based on the Content Location of the base view.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
v4.2.0
What's Changed
New Features
- Support extract-value boolean flag for Datasources
- Manifest can now be serialized and deserialized
Documentation
- Python Environment Config Doc improvements
Known Issues
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
- Some sample hooks in documentation only include C# sample code.
v4.1.0
What's Changed
New Features
- Migration of Schedules for Extract Refresh Tasks
Fixes
- Fixed bug in sample
- Fix release docs and license
Documentation
- Normalize Cancellation Token Documentation
- Docs: Navigation, CSS and images
Other
- Update 3rd party package and library versions
Known Issues
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
- Some sample hooks in documentation only include C# sample code.
v4.0.0
What's Changed
- Python hooks received a major update in version 4 of the Tableau Migration SDK.
- This change brings full autocomplete support in your favorite Python IDE!
- We have also added many Python hook samples to our documentation and reorganized to make it easier to use!
- In version 3, all Python hooks were thin wrappers around C# code, and the actual object manipulated by the hook was a C# object. In version 4 and beyond, everything is still a wrapper around C#, but the class itself and the context object passed to be manipulated are now fully in Python with no more C# required.
- The combination of making hook writing in Python completely pythonic and updated documentation with samples means that it has never been easier to write your own custom hooks in Python! See the Documentation section for more details
- These Python updates are BREAKING changes from previous versions.
Breaking Changes
- Python Hook Wrappers
New Features
- Python Hook Wrappers
Fixes
- Adjust content finder to cache the full list just one time
- Fixed Groups flaky tests
- Fixed for left nav menu of the
Python Wrapper
section - Fixed incorrect license in packages
Documentation
- Python Hook Wrapper Samples
Known Issues
- Hook context objects do not have Python wrapper objects. Context objects should be access through Python.NET interop.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
- Some sample hooks in documentation only include C# sample code.
v3.0.1
What's Changed
Breaking Changes
- Removing .net 7 support
Fixes
- Fix IsZipFile null tests
- Fix the stream is too short test
Documentation
- Fixed an error in the Python example application
- Docs: Navigation improvements
Other Changes
- Publish Pypi artifact from public dry-run pipeline
Known Issues
- Hook context objects do not have Python wrapper objects. Context objects should be access through Python.NET interop.
- Python wrapper objects cannot be accessed through dependency injection. .NET object can be injected and python wrappers built from them.
- Some sample hooks in documentation only include C# sample code.