A battle-tested toolkit for migrating Jira Assets (Insight) from Datacenter to Cloud. Born out of necessity during a real enterprise migration where no off-the-shelf solution existed.
Atlassian doesn't provide a turnkey migration path for Assets data. The documentation is sparse, the APIs are complex, and legacy Datacenter data brings its own surprises.
Atlassian's Assets API documentation is notoriously difficult to decipher. Edge cases are everywhere, and the only way to figure things out is trial and error.
Assets data has deep relational structures—cross-schema references, circular dependencies, and objects that can't exist without each other.
Every test run was long and tedious. Errors ranged from subtle data mismatches to hard API failures. There were no shortcuts—just persistence.
A plan-driven architecture that pre-computes the entire execution order before touching Cloud. Every step is checkpointed for resumability.
Pull schemas, objects, attributes, references, and attachments from Datacenter via REST API.
Build a dependency graph, run topological sort, and detect circular references before creating anything.
Create objects in Cloud in the correct order. Reference fields are resolved in a second pass after all objects exist.
Upload attachments and re-link Jira tickets to their migrated asset objects.
The features that made the difference between a migration that sort-of-works and one that actually completes.
When Object A depends on B and B depends on A, neither can go first. A dedicated tracker defers these to a post-processing phase after all objects exist.
Migration state is checkpointed to disk. If it crashes at object 8,000 of 20,000, it picks up right where it left off—no duplicates, no data loss.
Distribute API calls across up to 5 tokens for higher throughput while respecting rate limits. Essential for large enterprise datasets.
Datacenter and Cloud don't always agree on naming. The schema mapper handles underscores, case differences, partial matches, and pipe patterns automatically.
File attachments are downloaded from Datacenter and re-uploaded to their corresponding Cloud objects with retry logic for transient failures.
Full validation pass without creating anything in Cloud. Catches attribute mismatches, missing references, and configuration errors before the real run.
No migration is perfect. Here's what this toolkit prioritizes and what it intentionally leaves behind.
The history trade-off is deliberate—it ensures the core asset data migrates with zero loss rather than risking partial failures trying to move everything.
The toolkit is open source and free. If you need help running a migration or want to talk through the approach, reach out.