IBM Data Shift is a native macOS application designed to streamline the migration of user data from an old Mac to a new Mac. Built with SwiftUI, it provides an intuitive, guided experience for transferring files, applications, preferences, and settings over a direct peer-to-peer network connection.
JNUC 2024 Session 1077
University of Utah, MacAdmins Meeting, June 2025
- Transfer user files, applications, preferences, and settings between Macs
- Support for both Wi-Fi and Thunderbolt direct connections
- Automatic peer-to-peer network discovery using Bonjour (DNS-SD)
- Real-time progress tracking with time estimation
- Integration with Jamf Pro for managed environments
- MDM enrollment verification and environment detection
- Automated inventory updates post-migration
- Configurable via MDM profiles (UserDefaults)
- Extensive configuration options through UserDefaults
- Custom branding support (organization name, icons, colors)
- Configurable file inclusion/exclusion rules
- Flexible duplicate file handling policies
- Optional Terms & Conditions acceptance flow
- Intelligent file discovery with customizable filters
- Support for symbolic links preservation
- Duplicate file detection and handling
- Optional migration report generation
- Memory-optimized for large data transfers
- Multi-language support via
Localizable.xcstrings - Accessible UI with comprehensive VoiceOver support
- macOS: 12.0 (Monterey) or later
- Swift: 5.9.0 or later
- Xcode: 14.0 or later (for building from source)
- Network: Wi-Fi or Thunderbolt connection between devices
- Permissions: Full Disk Access required for complete data migration
- Device Discovery: Launch the app on both the source (old) and destination (new) Mac
- Connection: Devices automatically discover each other over the local network
- Verification: Secure pairing with verification code
- Configuration: Choose migration options (Lite, Complete, or Advanced)
- Transfer: Files are transferred directly between devices with real-time progress
- Completion: Optional post-migration steps (Apple ID verification, Jamf recon, device restart)
Download the latest release from the Releases page.
- Clone the repository:
git clone https://github.com/IBM/mac-ibm-migration-tool.git
cd mac-ibm-migration-tool- Open the project in Xcode:
open migrator.xcodeproj- Build and run:
- Select the
migratorscheme - Choose your target device
- Press
Cmd + Rto build and run
- Select the
IBM Data Shift can be extensively configured via MDM profiles or local UserDefaults. Key configuration options include:
orgName: Organization name for branding (default: "IBM")networkServiceIdentifier: Bonjour service identifier (default: "_migrator")skipMDMCheck: Skip device management verification (default: false)
duplicateFilesHandlingPolicy: How to handle duplicate files (skip,replace,move)backupPath: Path for duplicate file backups (default: "~/Desktop/Migration.Backup")skipDeviceReboot: Skip post-migration reboot prompt (default: false)generateReport: Generate migration report on desktop (default: false)
excludedPathsList: Array of paths to exclude from migrationallowedPathsList: Array of paths to explicitly includeexcludedFileExtensions: Array of file extensions to skipexcludedFilePrefixes: Array of file name prefixes to skip
mdmEnvironments: Array of managed environments with server URLs and recon policy IDsskipJamfRecon: Skip Jamf inventory update (default: false)jamfReconMethod: Method for running recon (selfServicePolicyorbinary)storePath: Path to Jamf Self Service app
welcomePageIcon: Custom icon for welcome pagebrowserPageIcon: Custom icon for browser pagesetupPageIcon: Custom icon for setup page- Custom icons available for all app pages
For detailed configuration options, check project's wiki.
-
Prepare both Macs:
- Ensure both devices have Wifi ON or connected via Thunderbolt
- Grant Full Disk Access to the app when prompted
- Keep both devices powered and awake during migration
-
Launch the app on both the source and destination Mac
-
Follow the guided workflow:
- Device discovery and pairing
- Migration option selection
- File transfer with progress tracking
- Post-migration steps (if configured)
Deploy the app via your MDM solution with a configuration profile containing your desired settings. Example profile keys:
<key>orgName</key>
<string>Your Organization</string>
<key>skipMDMCheck</key>
<false/>
<key>duplicateFilesHandlingPolicy</key>
<string>move</string>See the wiki for detailed deployment guides and configuration examples.
The app is built with a modular architecture:
- SwiftUI Views: Modern, declarative UI components
- Network Layer: Custom protocol over Network.framework for peer-to-peer communication
- Migration Controller: Orchestrates the file transfer process
- Device Management: Integration with macOS MDM APIs
- Logging: Comprehensive logging system with configurable verbosity
Key components:
MigrationController.swift: Core migration logicNetworkBrowser.swift: Device discoveryNetworkServer.swift: Server-side networkingNetworkConnection.swift: Client-side networkingAppContext.swift: Centralized configuration management
We welcome contributions! Please see our Contributing Guidelines for details on:
- Code of conduct
- Development workflow
- Pull request process
- Coding standards
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and SwiftLint
- Commit your changes (
git commit -am 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For security concerns, please see our Security Policy.
See CHANGELOG.md for a detailed history of changes and releases.
- Issues: Report bugs or request features via GitHub Issues
- Community: Join the
#mac-ibm-open-sourcechannel in the MacAdmins Slack - Maintainers: See MAINTAINERS.md for contact information
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
All source files must include the following copyright and license header:
//
// Β© Copyright IBM Corp. 2023, 2025
// SPDX-License-Identifier: Apache2.0
//
- Built by the Mac@IBM team
- Powered by Apple's Network.framework for peer-to-peer connectivity
- Designed for enterprise macOS environments
Note: This tool is specifically designed for macOS environments and requires appropriate permissions for full functionality. Always test in a non-production environment before deploying to end users.
