Migrate your Redmine 3.3 data
Self-hosted, open-source project management platform with flexible issue tracking and time logging. Free to deploy indefinitely, but requires server administration and manual migration between major versions.
In its favor
Why people choose Redmine 3.3
The signal that keeps Redmine 3.3 on the shortlist. Sourced from G2, Capterra, and customer scoping calls.
Open source under GPLv2 — Redmine 3.3 is freely self-hostable on the customer's infrastructure, removing vendor lock-in, per-seat licence costs, and the budget-line conversation that comes with Jira or Asana.
Released in 2016 for Redmine's 10th anniversary, version 3.3 stabilised long-running 2.x deployments — its Rails-based codebase and well-documented upgrade path mean many enterprises and government IT teams still run it years later.
Built-in issue tracking, multi-project hierarchy, Gantt charts, time tracking, wiki, forums, and role-based access control without paying for plugins, which Jira charges separately for in most cases.
3.3-specific UX wins like the new Objects drop-down menu, drag-and-drop reordering of trackers/statuses/roles/custom fields, and 24-language code highlighting in Textile make the day-to-day admin experience meaningfully better than 2.x.
Active plugin ecosystem and forks (Easy Redmine, RedmineUP, Redmine Flux, Planio) provide commercial support paths for teams that want managed hosting or extended features without abandoning the underlying data model.
No native Agile experience — Kanban boards and sprint planning require third-party plugins (Backlogs, Agile plugin from RedmineUP, etc.), which is a hard adoption blocker for teams that want Scrum or Kanban out of the box.
Stuck on an old release — Redmine 3.3 specifically is years behind the latest 5.x line, missing modern Ruby version support, security patches, and recent UX work; remaining on 3.3 is now a security and supportability risk.
Initial setup and ongoing upgrades require real Rails sysadmin skills (Ruby version, database, migrations, plugins, ERB templates), which is beyond what most project managers can handle without IT support.
Ecosystem is smaller than Jira — fewer modern SaaS integrations (Slack, GitHub, Bitbucket connectors exist but lag) and no built-in marketplace UX, so connectivity to current toolchains often needs custom work.
Self-hosted means the customer also owns backup, uptime, scaling, and security — costs that look invisible on paper but become significant for larger teams, often pushing them to migrate to Jira Cloud, GitLab, or Linear.
Reasons to switch
Why people leave Redmine 3.3
The recurring reasons buyers give for replacing Redmine 3.3. Presented as facts, not knocks.
Platform scorecard
Strengths, weaknesses, and where Redmine 3.3 fits
Grades across six dimensions, plus a SWOT-style view of where the platform shines and where it falls short.
SWOT — strengths, weaknesses, and use-case fit
Strengths
Weaknesses
Where it works
Where it struggles
Pricing tiers
Redmine 3.3 pricing overview
Redmine is entirely free and open source. There are no commercial tiers, no usage-based fees, and no vendor lock-in. Hosting costs (server, database, SSL, backups) are the only ongoing expense, which can be zero on internal infrastructure. Commercial variants such as RedmineUP plugins or Easy Redmine offer paid extensions with additional features.
Open Source
Tier 1 of 1
Free (self-hosted)
What's included
Need help selecting your Project Management?
Book a free 30 minute consultationPricing is informational. FlitStack AI does not bill on Redmine 3.3's schedule — see our quote-based pricing →
What gets migrated
Redmine 3.3 object support
Object-by-object support for Redmine 3.3 migrations. Per-pair details surface during scoping.
Projects
Fully supportedProjects are the top-level container in Redmine 3.3, supporting subprojects with independent module enablement per project. We export the full project tree, including public/private flags and per-project enabled modules (wiki, repository, issue tracking), then reconstruct the hierarchy at the destination preserving membership inheritance where the target supports it.
Issues
Fully supportedIssues are the core work item in Redmine, with fields for subject, description, status, priority, tracker, assignee, due date, start date, done ratio, and estimated hours. We map the full issue schema and preserve parent-child subtask relationships by resolving parent_issue_id references during the import phase.
Trackers
Fully supportedTrackers define issue types (e.g. Bug, Feature, Support) and have per-role permission restrictions introduced in Redmine 3.3. We export tracker definitions and workflow state mappings so the same issue-type categorization is available at the destination.
Custom Fields
Mapping requiredCustom fields in Redmine 3.3 apply to specific customized_types (issue, time_entry, project, user, version). List-format custom fields store internal IDs not display values. We query the custom_field definitions via the admin REST endpoint and resolve ID-to-label mappings before writing to the destination to avoid importing raw numeric references.
Time Entries
Fully supportedTime entries record hours spent against a project or specific issue, with fields for activity, hours, comments, and custom fields. We export time entries with their issue association intact and reconstruct the link on the destination so time reports and billing records are preserved.
Versions
Fully supportedVersions (or Targets) represent milestones or releases within a project, with fields for name, effective date, description, and status. We migrate versions as standalone objects and re-associate them with issues referencing the version by name at the destination.
Wiki Pages
Mapping requiredRedmine wikis are project-scoped and store content in a wiki_format attribute with page hierarchy. We export wiki content as raw text or HTML depending on the destination format, but page-level permissions and attachment cross-links require manual review post-migration.
Attachments
Mapping requiredFiles uploaded to issues, wiki pages, or documents are stored on the Redmine server filesystem or object storage. We extract attachment metadata and file content via the REST API and re-upload to the destination, but the file must be accessible from the source Redmine instance during the migration window.
Users and Memberships
Mapping requiredRedmine user accounts include login, firstname, lastname, email, admin flag, and custom fields. We export users and their project memberships with role assignments. Where the destination uses a different identity model (e.g. SSO or external directory), we map to existing destination users by email during the import phase.
Issue Relations
Mapping requiredRedmine supports typed issue relations (blocks, blocked by, relates to, duplicates, etc.) defined by internal IDs. We export the full relation graph and resolve target IDs after issue migration so relation semantics are preserved rather than silently dropping cross-issue dependencies.
Documents
Mapping requiredProject-level documents store a title, description, and category. We export documents as standalone objects, but document categories vary by installation and may require custom field mapping for specific deployments.
News
Mapping requiredProject news posts include a title, summary, content, and author. News is lower-priority for most migrations but we include it in the scope if explicitly requested; otherwise it is omitted to reduce migration scope and risk.
| Object | Support | Notes |
|---|---|---|
| Projects | Fully supported | Projects are the top-level container in Redmine 3.3, supporting subprojects with independent module enablement per project. We export the full project tree, including public/private flags and per-project enabled modules (wiki, repository, issue tracking), then reconstruct the hierarchy at the destination preserving membership inheritance where the target supports it. |
| Issues | Fully supported | Issues are the core work item in Redmine, with fields for subject, description, status, priority, tracker, assignee, due date, start date, done ratio, and estimated hours. We map the full issue schema and preserve parent-child subtask relationships by resolving parent_issue_id references during the import phase. |
| Trackers | Fully supported | Trackers define issue types (e.g. Bug, Feature, Support) and have per-role permission restrictions introduced in Redmine 3.3. We export tracker definitions and workflow state mappings so the same issue-type categorization is available at the destination. |
| Custom Fields | Mapping required | Custom fields in Redmine 3.3 apply to specific customized_types (issue, time_entry, project, user, version). List-format custom fields store internal IDs not display values. We query the custom_field definitions via the admin REST endpoint and resolve ID-to-label mappings before writing to the destination to avoid importing raw numeric references. |
| Time Entries | Fully supported | Time entries record hours spent against a project or specific issue, with fields for activity, hours, comments, and custom fields. We export time entries with their issue association intact and reconstruct the link on the destination so time reports and billing records are preserved. |
| Versions | Fully supported | Versions (or Targets) represent milestones or releases within a project, with fields for name, effective date, description, and status. We migrate versions as standalone objects and re-associate them with issues referencing the version by name at the destination. |
| Wiki Pages | Mapping required | Redmine wikis are project-scoped and store content in a wiki_format attribute with page hierarchy. We export wiki content as raw text or HTML depending on the destination format, but page-level permissions and attachment cross-links require manual review post-migration. |
| Attachments | Mapping required | Files uploaded to issues, wiki pages, or documents are stored on the Redmine server filesystem or object storage. We extract attachment metadata and file content via the REST API and re-upload to the destination, but the file must be accessible from the source Redmine instance during the migration window. |
| Users and Memberships | Mapping required | Redmine user accounts include login, firstname, lastname, email, admin flag, and custom fields. We export users and their project memberships with role assignments. Where the destination uses a different identity model (e.g. SSO or external directory), we map to existing destination users by email during the import phase. |
| Issue Relations | Mapping required | Redmine supports typed issue relations (blocks, blocked by, relates to, duplicates, etc.) defined by internal IDs. We export the full relation graph and resolve target IDs after issue migration so relation semantics are preserved rather than silently dropping cross-issue dependencies. |
| Documents | Mapping required | Project-level documents store a title, description, and category. We export documents as standalone objects, but document categories vary by installation and may require custom field mapping for specific deployments. |
| News | Mapping required | Project news posts include a title, summary, content, and author. News is lower-priority for most migrations but we include it in the scope if explicitly requested; otherwise it is omitted to reduce migration scope and risk. |
Gotchas
What to watch for in Redmine 3.3 migrations
Issues we've hit on past Redmine 3.3 migrations, tagged by severity. FlitStack AI handles every one — surfacing them up front because buyer engineering teams want to know.
Database migrations are required between major Redmine versions
CSV export has no native import counterpart
Custom field list values store internal IDs, not display labels
Plugin-specific data is not accessible via the REST API
Attachment files live on the server filesystem, not the database
| Severity | Issue |
|---|---|
| High | Database migrations are required between major Redmine versions |
| High | CSV export has no native import counterpart |
| Medium | Custom field list values store internal IDs, not display labels |
| Medium | Plugin-specific data is not accessible via the REST API |
| Medium | Attachment files live on the server filesystem, not the database |
Leaving Redmine 3.3?
Where Redmine 3.3 customers move next
5 destinations Redmine 3.3 can migrate to.
How a Redmine 3.3 migration works
Four steps, Redmine 3.3-specific
Connect
API key (per-installation) passed as a query parameter into Redmine 3.3. Scopes limited to read-only on the data we move.
Map
We translate Redmine 3.3-specific structures (custom fields, objects, value lists) to the destination's model.
Sample
Test with a 50–200 record subset to validate Redmine 3.3 quirks before production.
Migrate
Full migration with Redmine 3.3 rate-limit handling. Rollback available throughout.
FAQ
Redmine 3.3 migration FAQ
Answers to the questions buyers ask most during Redmine 3.3 migration scoping. Not seeing yours? Book a call.
Can't find your answer?
Walk through your Redmine 3.3 migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationOther project management tools we support
Ready when you are
Migrate Redmine 3.3.
Without the rebuild.
Free scoping call with a migration engineer. Tell us about your Redmine 3.3 setup and destination — written quote back within a business day.