Data Migration
Migrating from other tools, data import/export
Data Migration
Complete guide to migrating data into and out of Verk. Import from other project management tools, export for backup or migration, and handle bulk data operations.
Migration Overview
Verk supports migration from popular project management tools:
Supported Platforms:
- Jira (Cloud & Server)
- Asana
- Monday.com
- Trello
- Linear
- ClickUp
- Todoist
- Basecamp
- Microsoft Project
- CSV/Excel files
- JSON data
Migration Methods:
- Automated import (direct integration)
- File-based import (CSV, JSON, Excel)
- API-based migration (custom scripts)
- Professional migration service (Enterprise)
Pre-Migration Planning
Migration Checklist
Assess current data volume
- Count tasks, projects, users
- Measure file storage
- Identify custom fields
Clean up data in source system
- Archive completed projects
- Delete duplicate tasks
- Update outdated information
- Remove test data
Map field relationships
- Match custom fields
- Map status values
- Align priority levels
- Map user accounts
Plan migration schedule
- Choose migration window
- Notify team members
- Plan for downtime (if needed)
- Schedule testing time
Backup current data
- Export from source system
- Store securely
- Verify export completeness
Prepare Verk workspace
- Create organization
- Set up user accounts
- Configure project structure
- Create custom fields
Data Assessment
Analyze Source Data:
1. Log into source system
2. Generate data report:
- Total projects: ___
- Total tasks: ___
- Total users: ___
- Storage used: ___ GB
- Custom fields: ___
- Integrations: ___
3. Identify critical data
4. Note special requirements
Verk Capacity Planning:
Free plan limits:
- 10 users
- 5 projects
- 2 GB storage
Pro plan:
- Unlimited users
- Unlimited projects
- 100 GB storage per user
Enterprise:
- Everything unlimited
- Custom storage
Migrating from Specific Tools
Jira Migration
Automated Import:
1. Settings → Integrations → Jira
2. Click "Import from Jira"
3. Enter Jira credentials:
- Jira URL
- Email
- API token
4. Configure mapping:
- Projects → Projects
- Issues → Tasks
- Users → Members
- Custom fields
5. Select what to import:
All projects or specific projects
Open issues only or all issues
Comments and attachments
Issue history
Links and relationships
6. Start import
7. Monitor progress
8. Review imported data
Field Mapping:
Jira Field → Verk Field
─────────────────────────────────
Summary → Title
Description → Description
Status → Status (custom mapping)
Priority → Priority
- Highest → High
- High → High
- Medium → Medium
- Low → Low
- Lowest → Low
Assignee → Assignee
Reporter → Creator
Due Date → Due Date
Labels → Tags
Components → Custom Field
Story Points → Custom Field
Sprint → Custom Field
CSV Export Method:
1. In Jira: Export issues to CSV
2. Download CSV file
3. In Verk: Settings → Import → CSV
4. Upload Jira CSV
5. Verk auto-detects Jira format
6. Review mapping
7. Import
Asana Migration
Direct Import:
1. Settings → Integrations → Asana
2. Click "Import from Asana"
3. Authorize Verk access to Asana
4. Select workspace to import
5. Choose projects:
- All projects
- Specific projects
6. Configure options:
Import completed tasks
Import archived projects
Import attachments
Import comments
Import custom fields
7. Map users (auto-match by email)
8. Start import
9. Review results
Field Mapping:
Asana → Verk
─────────────────────────────────
Task name → Title
Notes → Description
Due date → Due Date
Assignee → Assignee
Tags → Tags
Custom fields → Custom fields
Section → Status/Column
Projects → Projects (task can be in multiple)
Attachments → Files
Comments → Comments
Trello Migration
Board Import:
1. In Trello: Board Menu → More → Print and Export → Export JSON
2. Download board JSON file
3. In Verk: Settings → Import → Trello
4. Upload JSON file
5. Configure import:
- Board → Project
- Lists → Status columns
- Cards → Tasks
- Labels → Tags
- Members → Members
- Checklists → Subtasks
- Attachments → Files
6. Review mapping
7. Import board
8. Verify all cards imported
Multiple Boards:
To import multiple Trello boards:
1. Export each board separately
2. Import one by one
3. Or: Use bulk import tool (contact support)
Monday.com Migration
Export from Monday:
1. In Monday: Board Menu → Export → Excel
2. Download Excel file for each board
3. Repeat for all boards needed
Import to Verk:
1. Settings → Import → Excel
2. Upload Monday Excel file
3. Map columns:
- Name → Title
- Status → Status
- Person → Assignee
- Date → Due Date
- Custom columns → Custom fields
4. Import board
5. Repeat for other boards
Linear Migration
API-Based Migration:
1. Settings → Import → Linear
2. Enter Linear API key
3. Select teams to import
4. Configure mapping:
- Issues → Tasks
- Projects → Projects
- Labels → Tags
- States → Statuses
- Priority → Priority
5. Choose options:
Import completed issues
Import archived projects
Import comments
Import attachments
6. Start import
7. Monitor progress
Todoist Migration
Export from Todoist:
1. Todoist Settings → Backups
2. Download CSV backup
3. Unzip file
Import to Verk:
1. Settings → Import → CSV
2. Upload Todoist CSV
3. Map fields:
- Task → Title
- Description → Description
- Due Date → Due Date
- Priority → Priority (1=High, 2=Medium, 3-4=Low)
- Project → Project
- Labels → Tags
4. Create projects if needed
5. Import tasks
Generic Data Import
CSV Import
CSV Format Requirements:
Title,Description,Status,Priority,Assignee,Due Date,Tags,Project
"Implement login","Add OAuth2 authentication","To Do","High","john@company.com","2024-02-15","feature,auth","Website Rebuild"
"Fix navbar bug","Navigation broken on mobile","In Progress","High","jane@company.com","2024-02-10","bug,ui","Website Rebuild"
"Update docs","Refresh API documentation","To Do","Medium","bob@company.com","2024-03-01","docs","Documentation"
Required Fields:
- Title (required)
Optional Fields:
- Description
- Status
- Priority
- Assignee (email address)
- Due Date (ISO 8601 or common formats)
- Tags (comma-separated)
- Project
- Custom fields (additional columns)
Import Process:
1. Settings → Import → CSV
2. Upload CSV file
3. Map columns:
- Drag column headers to Verk fields
- Set data types
- Configure parsing options
4. Preview import (first 10 rows)
5. Validate data:
- Check for errors
- Review warnings
- Fix issues if needed
6. Choose import behavior:
- Create new tasks
- Update existing tasks (match by ID)
- Skip duplicates
7. Import data
8. Review import report
CSV Import Options:
Encoding: UTF-8, UTF-16, Latin-1
Delimiter: Comma, Semicolon, Tab
Quote Character: Double quote, Single quote
Date Format: Auto-detect, Custom (YYYY-MM-DD, MM/DD/YYYY, etc.)
Skip Rows: Header row count
Excel Import
Supported Formats:
- .xlsx (Excel 2007+)
- .xls (Excel 97-2003)
- .xlsm (Macro-enabled)
Multi-Sheet Import:
1. Upload Excel file with multiple sheets
2. Choose sheets to import:
- Each sheet → Separate project
- All sheets → One project
- Select specific sheets
3. Map columns per sheet
4. Import
Excel Features Supported:
- Cell formatting (dates, numbers)
- Merged cells (use first cell value)
- Formulas (use calculated value)
- Multiple sheets
- Named ranges
JSON Import
JSON Format:
{
"projects": [
{
"name": "Website Rebuild",
"description": "Q1 2024 website redesign",
"tasks": [
{
"title": "Design homepage",
"description": "Create mockups in Figma",
"status": "in_progress",
"priority": "high",
"assignee": "john@company.com",
"dueDate": "2024-02-15",
"tags": ["design", "ui"],
"customFields": {
"estimatedHours": 16,
"department": "Marketing"
}
}
]
}
]
}
Import JSON:
1. Settings → Import → JSON
2. Upload JSON file
3. Verk auto-detects structure
4. Review detected mapping
5. Adjust if needed
6. Import
Bulk Operations
Bulk Task Creation
Via CSV:
1. Download CSV template
2. Fill in task details
3. Import via CSV import
4. Tasks created in bulk
Via API:
// Bulk create tasks
const tasks = [
{ title: 'Task 1', projectId: 'proj_123' },
{ title: 'Task 2', projectId: 'proj_123' },
{ title: 'Task 3', projectId: 'proj_123' },
]
const results = await Promise.all(tasks.map(task => verk.tasks.create(task)))
console.log(`Created ${results.length} tasks`)
Bulk Updates
Update via CSV:
1. Export current tasks to CSV
2. Edit fields in CSV
3. Include task ID column
4. Import with "Update existing" option
5. Tasks updated in bulk
Update via API:
// Bulk update tasks
const updates = [
{ id: 'task_1', status: 'done' },
{ id: 'task_2', status: 'in_progress' },
{ id: 'task_3', priority: 'high' },
]
for (const update of updates) {
await verk.tasks.update(update.id, {
status: update.status,
priority: update.priority,
})
}
Bulk Deletion
Delete via Selection:
1. Tasks view → Select multiple tasks
2. Bulk Actions → Delete
3. Confirm deletion
4. Tasks moved to trash (30-day retention)
Delete via API:
// Bulk delete tasks
const taskIds = ['task_1', 'task_2', 'task_3']
await Promise.all(taskIds.map(id => verk.tasks.delete(id)))
Data Export
Export Formats
Verk Native Format (JSON):
- Full fidelity
- Preserves all relationships
- Re-importable to Verk
- Includes all custom fields
- Best for migration/backup
CSV:
- Spreadsheet-compatible
- Good for analysis
- Limited to flat structure
- Best for task lists
Excel:
- Formatted spreadsheets
- Multiple sheets
- Charts and graphs
- Best for reports
PDF:
- Print-ready documents
- Professional appearance
- Non-editable
- Best for sharing/archiving
Organization Export
Full Export:
1. Settings → Data Export
2. Choose "Export Organization"
3. Configure:
- Format: JSON, CSV, Excel
- Date range: All time, Custom
- Include files: Yes/No (affects size)
- Include archived: Yes/No
4. Create export
5. Receive email when ready
6. Download (48-hour expiration)
What's Exported:
- All projects and tasks
- User accounts (without passwords)
- Comments and activity
- Custom fields and schemas
- Workflows and automations
- Integration settings (without credentials)
- Organization settings
- File metadata (and files if included)
Project Export
Single Project:
1. Open project
2. Project Menu → Export
3. Choose format
4. Download immediately
Multiple Projects:
1. Projects list
2. Select multiple projects
3. Bulk Actions → Export
4. Choose format
5. Combined export downloaded
Scheduled Exports
Automatic Exports:
Settings → Data Export → Schedule
Configure:
- Frequency: Daily, Weekly, Monthly
- Day/Time
- Scope: Full organization, Specific projects
- Format: JSON, CSV, Excel
- Delivery:
* Email download link
* SFTP upload
* S3 bucket
* Google Drive
* Dropbox
- Retention: Keep last X exports
Use Cases:
- Regular backups
- Compliance reporting
- Data warehouse sync
- Business intelligence feeds
Custom Migration Scripts
API-Based Migration
Migration Script Template:
// migration-script.js
const { VerkClient } = require('@verk/sdk')
const fs = require('fs')
const verk = new VerkClient({
apiKey: process.env.VERK_API_KEY,
})
async function migrateData() {
// 1. Read source data
const sourceData = JSON.parse(fs.readFileSync('source-data.json', 'utf8'))
// 2. Create projects
const projectMap = new Map()
for (const sourceProject of sourceData.projects) {
const verkProject = await verk.projects.create({
name: sourceProject.name,
description: sourceProject.description,
})
projectMap.set(sourceProject.id, verkProject.id)
console.log(`Created project: ${verkProject.name}`)
}
// 3. Create users (if needed)
const userMap = new Map()
for (const sourceUser of sourceData.users) {
// Invite user to organization
await verk.members.invite({
email: sourceUser.email,
role: 'member',
})
userMap.set(sourceUser.id, sourceUser.email)
}
// 4. Create tasks
let taskCount = 0
for (const sourceTask of sourceData.tasks) {
const verkTask = await verk.tasks.create({
title: sourceTask.title,
description: sourceTask.description,
projectId: projectMap.get(sourceTask.projectId),
assigneeId: userMap.get(sourceTask.assigneeId),
priority: mapPriority(sourceTask.priority),
status: mapStatus(sourceTask.status),
dueDate: sourceTask.dueDate,
customFields: {
sourceId: sourceTask.id,
...sourceTask.customData,
},
})
taskCount++
if (taskCount % 100 === 0) {
console.log(`Migrated ${taskCount} tasks...`)
}
}
console.log(`Migration complete! ${taskCount} tasks migrated.`)
}
function mapPriority(sourcePriority) {
const map = {
critical: 'high',
high: 'high',
medium: 'medium',
low: 'low',
trivial: 'low',
}
return map[sourcePriority.toLowerCase()] || 'medium'
}
function mapStatus(sourceStatus) {
const map = {
open: 'todo',
in_progress: 'in_progress',
complete: 'done',
closed: 'done',
}
return map[sourceStatus.toLowerCase()] || 'todo'
}
migrateData().catch(console.error)
Run Migration:
VERK_API_KEY=your_api_key node migration-script.js
Rate Limiting & Performance
Handle Rate Limits:
async function createTaskWithRetry(taskData, maxRetries = 3) {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await verk.tasks.create(taskData)
} catch (error) {
if (error.status === 429 && attempt < maxRetries) {
// Rate limited, wait and retry
const delay = Math.pow(2, attempt) * 1000
console.log(`Rate limited, waiting ${delay}ms...`)
await sleep(delay)
} else {
throw error
}
}
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
Batch Processing:
async function migrateTasks(tasks, batchSize = 10) {
const results = []
for (let i = 0; i < tasks.length; i += batchSize) {
const batch = tasks.slice(i, i + batchSize)
const batchResults = await Promise.all(
batch.map(task => createTaskWithRetry(task))
)
results.push(...batchResults)
console.log(
`Processed ${Math.min(i + batchSize, tasks.length)} / ${tasks.length}`
)
// Small delay between batches
await sleep(100)
}
return results
}
Post-Migration
Verification Checklist
Data completeness
- Count imported projects
- Count imported tasks
- Verify user accounts
- Check custom fields
Data accuracy
- Spot-check task details
- Verify relationships
- Test search functionality
- Validate dates and times
Functionality test
- Create new task
- Update existing task
- Test commenting
- Test file upload
- Test notifications
User access
- Verify all users can login
- Check permissions
- Test project access
- Validate role assignments
Integrations
- Reconnect integrations
- Test webhooks
- Verify API keys
- Test automation rules
Clean up
- Archive test data
- Remove duplicates
- Update project settings
- Configure notifications
Data Validation
Run Integrity Check:
Settings → Data Integrity → Run Check
Validates:
- All tasks have valid projects
- All assignees are valid users
- All relationships are intact
- No orphaned data
- Custom field values are valid
Manual Validation:
1. Compare record counts:
Source: ___ projects, ___ tasks
Verk: ___ projects, ___ tasks
2. Spot-check data:
- Random task sample (10-20 tasks)
- Verify all fields
- Check relationships
- Validate dates/times
3. Test workflows:
- Create task
- Update task
- Complete task
- Delete task
4. User acceptance testing:
- Have team members verify their data
- Collect feedback
- Address issues
User Training
Post-Migration Training:
Topics to cover:
1. Verk interface overview
2. Finding migrated data
3. Key differences from previous tool
4. New features available
5. Best practices
6. Where to get help
Resources:
- Documentation links
- Video tutorials
- Live training session
- Q&A session
Troubleshooting
Common Migration Issues
Import Failed
Possible causes:
- Invalid file format
- Unsupported characters
- File size too large
- Missing required fields
- Invalid date formats
Solutions:
1. Check file format and encoding
2. Reduce file size (split into smaller files)
3. Validate required fields
4. Use standard date format (YYYY-MM-DD)
5. Check error log for details
Duplicate Data
Problem: Items imported multiple times
Prevention:
- Use "Skip duplicates" option
- Include unique identifiers
- Check import before running
Fix:
1. Identify duplicates
2. Use bulk delete
3. Re-import with correct settings
Missing Relationships
Problem: Tasks not linked to correct projects or users
Causes:
- User email mismatch
- Project name differences
- Invalid references
Fix:
1. Export current data
2. Update relationships in CSV
3. Re-import with "Update existing"
Character Encoding Issues
Problem: Special characters display incorrectly
Solution:
1. Ensure file is UTF-8 encoded
2. Re-export from source with UTF-8
3. Use text editor to convert encoding
4. Re-import file
Best Practices
Before Migration:
- Clean source data
- Test with small sample first
- Back up everything
- Schedule migration window
- Communicate with team
During Migration:
- Monitor progress
- Watch for errors
- Keep source system available
- Document any issues
- Take screenshots
After Migration:
- Verify all data
- Test functionality
- Train users
- Collect feedback
- Archive source data (don't delete immediately)
Migration Timing:
- Avoid peak hours
- Allow buffer time
- Plan for validation
- Schedule training soon after
- Keep old system available for 1-2 weeks
Professional Migration Services
Enterprise Migration Support:
For complex migrations, Verk offers professional services:
Included:
- Migration planning consultation
- Custom script development
- Data transformation
- Testing and validation
- User training
- Post-migration support
Contact: migrations@verk.com
Related Documentation
- Admin Controls - User and system management
- Backup & Recovery - Data backup procedures
- API Reference - API for custom migrations
- Integrations - Integration guides
Need migration help? Contact migration support for assistance.