Project Management migration
Field-level mapping, validation, and rollback between Fruux and Jira. We move data and schema; workflows are rebuilt natively in Jira.
Fruux
Source
Jira
Destination
Compatibility
7 of 12
objects map 1:1 between Fruux and Jira.
Complexity
CModerate
Timeline
2-4 weeks
Overview
The Fruux-to-Jira migration is a structural data remapping rather than a direct record transfer. Fruux stores Tasks as CalDAV VTODO components in a flat task-list hierarchy, while Jira uses a typed Issue object model (Epic, Story, Task, Bug) organized under Projects with Sprint and Assignee semantics. We decompose each Fruux task list into a Jira Project, map VTODO summary, due date, completion status, and description fields to their Jira Issue equivalents, and import through the Jira Bulk API with rate-limit handling. Fruux Contacts do not map to Jira native objects in a standard way; we treat them as Jira User lookup candidates and flag them for manual provisioning. Notes, Bookmarks, and proprietary Fruux objects do not migrate as structured records. Workflows, calendar sharing rules, and Fruux sync rules do not migrate because they have no Jira equivalent.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Fruux object lands in Jira, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Fruux
Task (VTODO)
Jira
Issue
1:1Fruux tasks stored as CalDAV VTODO components map to Jira Issues. We extract UID, SUMMARY (maps to Summary), DUE (maps to Due Date), COMPLETED (maps to Status — completed VTODO becomes Done in Jira), DESCRIPTION (maps to Description), PRIORITY (maps to Priority), CATEGORIES (maps to Labels), and X-FRUXX-* extended properties. Each VTODO maps to a Jira Issue type chosen during scoping: Epic, Story, Task, or Bug. The parent VTODO UID becomes the Jira parent Issue link if the Fruux task had sub-tasks.
Fruux
Task List
Jira
Project
1:1Fruux task lists are CalDAV collections containing VTODO components. Each distinct task list maps to a Jira Project with a dedicated Issue type scheme. We pre-create the Jira Project via the Jira API before importing Issues, set the default Issue type (Task, Story, or Bug per the customer's preference), and configure the initial workflow. If Fruux has multiple task lists, each becomes a separate Jira Project with its own default assignee pool.
Fruux
Calendar Event (VEVENT)
Jira
Issue
1:manyFruux calendar events stored as iCalendar VEVENT components do not have a direct Jira equivalent because Jira has no native calendar object. We decompose each VEVENT into a Jira Issue: SUMMARY maps to Issue Summary, DTSTART/DTEND map to Due Date and a custom time-range field, DESCRIPTION maps to Issue Description, LOCATION maps to a custom Location field, and ATTENDEE emails become Issue watchers. Recurring VEVENT RRULE values are decomposed into a Jira Issue per occurrence, with a Recurrence ID custom field to preserve the original rule reference.
Fruux
Calendar Subscription
Jira
Filter + Board
lossyFruux iCalendar subscriptions (webcal/ICS URLs) have no direct Jira equivalent. We export the subscription URL and, if the customer requests, create a Jira Filter using a JQL query that matches the imported VEVENT-derived Issues by labels (e.g., label = 'calendar-import'). A Scrum or Kanban Board can be configured to display that Filter as its default query, giving the customer a calendar-view-equivalent board in Jira.
Fruux
Contact
Jira
User
1:1Fruux contacts stored as vCard (RFC 6350) records do not map directly to Jira native objects because Jira does not have a Contact object. We extract the FN, EMAIL, and TEL properties and match them against Jira User accounts by email during migration. Any Fruux contact without a matching Jira User is flagged in the reconciliation report for the customer's admin to provision manually. Fruux contacts are not migrated as Jira Accounts (which are CRM-style company records) unless the customer specifically requests Account creation from contact data.
Fruux
Address Book
Jira
Group
lossyFruux supports multiple CardDAV address books per user. Each addressbook-home-set maps to a Jira Group that we pre-create via the Jira API. vCard FN and EMAIL properties from that address book are matched to Jira Users in the corresponding group. This preserves Fruux group semantics as Jira group memberships, enabling the customer to configure project-level permissions by group after migration.
Fruux
Task Sub-task
Jira
Sub-Task Issue
1:1Fruux supports hierarchical VTODO components where a parent VTODO has child VTODO entries. We map these to Jira Sub-Task Issues (Issue type = Sub-Task) with a Parent link to the Jira parent Issue. The Jira Sub-Task feature must be enabled in the target Project's Issue type scheme before migration; we handle this as a pre-migration configuration step.
Fruux
Note
Jira
Issue Description or Attachment
lossyFruux Notes are proprietary objects with no CardDAV binding. We export accessible notes via web API scraping where technically feasible, but cannot guarantee full content or formatting fidelity. Long notes (exceeding Jira Description character limits) are split across multiple Jira Comments. Short notes become Issue Descriptions. Customers with heavy Notes usage should plan for manual recreation or a Confluence page as a Notes replacement.
Fruux
Tag / Label
Jira
Label
1:1Fruux task tags stored in VTODO CATEGORIES or X-FRUXX-tag properties migrate to Jira Labels as a flat list. Labels are created at migration time if they do not already exist in the destination Jira project. Jira Labels are project-scoped by default, so tags from multiple Fruux task lists may share label names across projects — we do not deduplicate cross-project label namespaces.
Fruux
Conflict Resolution Artifact
Jira
Issue (duplicate flagged)
lossyFruux creates server-side copies when the same record is edited on multiple devices simultaneously. These appear as duplicate VTODO entries with identical UIDs but different content. We detect duplicates by comparing UID + SUMMARY + DUE fields, flag suspected duplicates in a reconciliation report before import, and suppress duplicates from the Jira import unless the customer explicitly chooses to import all copies. This prevents duplicate Jira Issues from Fruux sync artifacts.
Fruux
Bookmark
Jira
Confluence Page
1:1Fruux Bookmarks are stored in a proprietary internal format with no CardDAV or CalDAV export path. We do not migrate Bookmarks as structured records because there is no interoperable protocol and no Jira equivalent native object. We deliver a plain-text list of extracted bookmark URLs with titles for the customer to recreate manually or import into Confluence as a links page.
Fruux
Fruux Sync Rules
Jira
Jira Automation Rules
1:1Fruux does not expose an automation engine — sync rules are client-side configuration (sharing permissions, push settings) rather than server-side triggers. We do not migrate Fruux sync rules because they have no Jira equivalent. We deliver a written inventory of Fruux sharing configurations (task lists shared with which users, calendar access permissions) as a reference for the customer to recreate in Jira as project role memberships and Automation for Jira rules post-migration.
| Fruux | Jira | Compatibility | |
|---|---|---|---|
| Task (VTODO) | Issue1:1 | Fully supported | |
| Task List | Project1:1 | Fully supported | |
| Calendar Event (VEVENT) | Issue1:many | Fully supported | |
| Calendar Subscription | Filter + Boardlossy | Fully supported | |
| Contact | User1:1 | Fully supported | |
| Address Book | Grouplossy | Fully supported | |
| Task Sub-task | Sub-Task Issue1:1 | Fully supported | |
| Note | Issue Description or Attachmentlossy | Fully supported | |
| Tag / Label | Label1:1 | Fully supported | |
| Conflict Resolution Artifact | Issue (duplicate flagged)lossy | Fully supported | |
| Bookmark | Confluence Page1:1 | Fully supported | |
| Fruux Sync Rules | Jira Automation Rules1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Fruux gotchas
No CSV import blocks bulk contact migrations
Sync failures with Apple DAV clients cause data loss
Bookmarks and Notes have no exportable standard format
No public rate-limit or quota documentation
Conflict-resolution artifacts require deduplication
Jira gotchas
Unsupported workflow validators silently skipped during migration
Custom fields converted to flat text labels when migrating to non-Jira platforms
Historical status-change timestamps lost when exporting without a Marketplace plugin
Attachment import failures from oversized files and JQL reference corruption
Points-based API rate limits enforced on Jira Cloud apps from March 2026
Pair-specific challenges
Migration approach
Discovery and data inventory
We perform a full export from Fruux using CalDAV REPORT queries against dav.fruux.com to inventory all VTODO collections, VEVENT calendars, CardDAV addressbooks, and accessible proprietary objects (Notes, Bookmarks where technically feasible). We count unique UIDs, identify conflict-resolution duplicates, and produce a Fruux data inventory report that itemizes record counts per task list, calendar, and address book. This report drives the Jira Project and Issue type mapping design.
Jira Project and Issue type design
We design the destination Jira structure based on the Fruux data inventory. Each Fruux task list becomes a Jira Project with its default Issue type scheme configured. We decide on Epic-Story-Task-Bug hierarchy or a flat Task-only scheme per project. Sub-task enablement, custom fields for Fruux-extended properties (recurrence, location, time range), and Label prefix conventions are all configured via Jira metadata API before any data import begins. Jira projects are deployed into a Sandbox or test environment first.
Fruux conflict artifact deduplication
We process the Fruux CalDAV export to detect and resolve conflict-resolution duplicates. We compare UID + SUMMARY + DUE across all VTODO records, group suspected duplicates, and present the deduplication report to the customer for review before suppression. The customer chooses whether to suppress duplicates or import all copies. We do not make assumptions about which conflict copy represents the authoritative record.
Contact-to-User matching and Jira User provisioning
We extract vCard records from Fruux CardDAV addressbooks and match FN + EMAIL against the destination Jira site's existing User accounts. Users with no match are listed in a provisioning report for the customer's Jira admin. We do not create Jira User accounts during migration; that requires admin credentials and org-specific user provisioning decisions (email domain matching, SSO configuration, group assignment). Migration cannot proceed past contact reconciliation until Jira Users exist for assigned Contacts.
Jira Bulk API import in dependency order
We import data into Jira in dependency order: Jira Users (manual, validated), Projects and Issue type schemes (via API), Issues from Fruux VTODO (via Bulk API 2.0), Sub-Tasks (after parent Issues exist), VEVENT-derived Issues (after calendar decomposition), Labels (created inline with Issue import), and Comments/Attachments last. We use Jira Bulk API 2.0 with batch chunking, parent-Issue lookup resolution for Sub-Tasks, and exponential backoff on 429 responses. Each phase emits a row-count reconciliation report.
Cutover, delta sync, and automation handoff
We freeze Fruux writes during cutover, run a final delta export of any VTODO or VEVENT records modified during the migration window, import the delta into Jira, and then enable Jira as the system of record. We deliver a written inventory of Fruux sync rules, sharing configurations, and calendar subscriptions with recommended Jira equivalents (project role memberships, Automation for Jira rules, Filter-based boards). We do not rebuild Fruux configurations as Jira automations inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Fruux
Source
Strengths
Weaknesses
Jira
Destination
Strengths
Weaknesses
Complexity grading
Moderate Project Management migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Fruux and Jira.
Object compatibility
4 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Fruux: Not publicly documented — Fruux has not published rate-limit headers or quota thresholds.
Data volume sensitivity
Fruux doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Fruux to Jira migration scoping. Not seeing yours? Book a call.
Walk through your Fruux to Jira migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Fruux
Other ways to arrive at Jira
Same-Project Management migrations
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.