
The Struggle is Real: Migrating from Unifi to Content Catalog
It’s no secret that the landscape of Revit content management is shifting. Since Autodesk acquired Unifi in 2023, the roadmap has become clear: Unifi is close to being deprecated in favor of Autodesk Content Catalog.
Sounds simple, right? Not quite. We all know where we are going, but getting your BIM content from Point A to Point B requires a bit of DIY spirit.
Why? Because Unifi’s standard batch-download and batch-insert options sometimes overlook the nuances of “non-loadable” Revit content (e.g., sheets, views, model groups, and complex nesting). This leaves many of stuck in a bit of a manual process, creating container projects and trusting a potentially inaccurate batch import.
Speaking from experience, you will gradually lose trust in the exported Revit content as you navigate a labyrinth of nested families and the inevitable wave of overwrite prompts.
To mitigate the risk of batch downloading/inserting via the Unifi interface, I developed an alternative approach.
I wanted to share a couple of simple Python scripts I developed which use the Unifi API to solve this exact bottleneck, ensuring your libraries stay structured and your nested families remain as a “snapshot” during the move. I’m putting these out there in hopes they save you the same headaches (and hundreds of hours) they saved my client.
View the source code on GitHub:
https://github.com/TripleZeroLabs/Unifi-BackupUtility
How it Works
The tool is split into two simple Python scripts that interact with the Unifi API to do the heavy lifting for you.
1. Generate a CSV Report of All Library Content: get_report.py
This script paginates through your entire Unifi collection (handling the API’s 100-result limit automatically) and generates a comprehensive CSV report. This report includes everything from File IDs and Revision IDs to the earliest supported Revit year.
2. Download All Unifi Content Locally: download_files.py
This is where the magic happens. The script reads your CSV and begins downloading your content into a downloads/ folder.
- Organized by Library: It creates a subfolder for every library you have access to.
- Smart Duplication: If a file lives in multiple libraries, the script is smart enough to download it once and then copy it to the respective folders, saving you bandwidth and time. We duplicate the families in multiple folders as a means to replicate the contents of your Unifi libraries.
- RVT Normalization: Unifi stores certain Revit data (like System Types, Views, and Schedules) under non-standard extensions. This tool automatically renames them to
.rvtand adds a prefix so they are immediately recognizable and usable.
Non-Loadable Revit Content
For Revit content that is not conventionally saved and loadable external of Revit, we found that Unifi stores these types of content as their own proprietary file types, but they’re really nothing more than self-contained Revit project models in the cloud. This script handles those types of content by saving system families, drafting views, schedules, and sheets as their own RVT files.
These scripts not only add the rvt extension to the downloaded file, but also apply a prefix to the filename so its easy to identify the type of content stored in the rvt project model.
| Original Extension | Renamed To | Prefix Applied |
.systemtype | .rvt | systemtype_ |
.view | .rvt | view_ |
.schedule | .rvt | schedule_ |
.rvtsheet | .rvt | sheet_ |
Tracking Progress
Downloading thousands of Revit families isn’t instantaneous. To keep you from wondering if the script has frozen, it provides real-time feedback:
- Live Console Logs: You’ll see a scrolling status in your Python console as each file is requested and saved.
- CSV Download Log: Once finished, a timestamped log is generated. This file records the
DownloadStatusand theFinalPathfor every single item, making it easy to confirm that your backup is 100% complete.
Getting Starting Guide
To get started, you’ll need Python 3.10+ and a “Content Download” Unifi API Key.
- Clone the repo: https://github.com/TripleZeroLabs/Unifi-BackupUtility
- Install dependencies:
pip install requests python-dotenv - Configure your
.envfile with yourUNIFI_API_KEYandUNIFI_USERNAME. - Run the report, then the downloader.
A Final Note
As with any tool that interacts with your firm’s data, please use this at your own risk. While it’s designed to be a non-destructive export tool, I always recommend running it on a smaller test library first to ensure the results meet your expectations.
Whether you’re prepping for the transition to Content Catalog or just want the peace of mind that comes with a local backup, I hope this helps! Drop a comment below if you have any questions or feedback.
Love you Jay!