-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Jeffrie Budde edited this page Apr 10, 2026
·
1 revision
A production-ready Python toolkit for migrating identity data from a source identity provider into OneLogin, with a powerful CLI and an interactive GUI wizard.
- Multi-provider: Pluggable source provider architecture — Okta supported out of the box, straightforward to extend to Azure AD, Google Workspace, and others
- Multi-interface: CLI for automation and scripting, step-by-step GUI wizard with analysis tools
- Secure credential storage: System keyring integration — credentials never stored in files
- Safe by default: Dry-run mode, field validation, resumable migrations with state persistence
- Concurrent processing: Thread-safe with automatic rate limiting and exponential backoff
- Flexible data export: JSON snapshots or OneLogin bulk CSV format
- Smart field mapping: Automatic custom attribute discovery, normalization, and provisioning
- Application catalog: Database-driven OneLogin connector matching with confidence scoring
- Analysis & reporting: Pre-migration environment analysis exportable to CSV/XLSX
- Python 3.10–3.13
- Git
Verify your Python version:
python3 --version-
Clone the repository:
git clone <repository-url> cd onelogin-migration-wizard
-
Create and activate a virtual environment:
python3 -m venv .venv source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows
-
Install all packages:
./scripts/dev-install.sh
-
Verify:
python -m onelogin_migration_cli.app --help
If you see
ModuleNotFoundError, setPYTHONPATHmanually:export PYTHONPATH=packages/cli/src:packages/core/src
# 1. Store credentials securely in the system keyring (done once per environment)
python -m onelogin_migration_cli.app credentials set source token
python -m onelogin_migration_cli.app credentials set onelogin client_secret
# 2. Create your config from the template and fill in non-secret settings
cp config/migration.template.yaml config/migration.yaml
# Set: source.provider, source.domain, onelogin.subdomain, onelogin.region, etc.
# Leave token/client_secret blank — they are injected from the keyring at runtime.
# 3. Test read-only export from your source provider
python -m onelogin_migration_cli.app plan --config config/migration.yaml
# 4. Run migration in dry-run mode (safe default)
python -m onelogin_migration_cli.app migrate --config config/migration.yamlOr launch the GUI wizard (no config file needed — credentials entered in the UI):
python -m onelogin_migration_gui.mainplan Export from source provider (read-only)
migrate Execute full migration workflow
provision-attributes Pre-create custom attributes in OneLogin
show-config Display sanitized configuration for troubleshooting
credentials Manage secure credentials (keyring/vault)
db Manage the application connector database
telemetry View migration analytics and statistics
- Architecture — System design, module overview, and how to add a new source provider
- Configuration — YAML settings, credential management, and security best practices
- Command-Line — CLI reference and usage examples
- GUI — Interactive wizard walkthrough
- Development — Local setup, testing, and contributing
Continue through the wiki pages for comprehensive guides on using and extending the toolkit.