Project Management migration
Field-level mapping, validation, and rollback between Fruux and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Fruux
Source
Asana
Destination
Compatibility
9 of 12
objects map 1:1 between Fruux and Asana.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Fruux and Asana operate in different domains — Fruux is a personal CalDAV/CardDAV sync service for contacts, calendars, and tasks with no team collaboration layer, while Asana is a team-first project management platform organized around Workspaces, Teams, Projects, and Tasks. A migration from Fruux to Asana is therefore a structural transformation: we extract Fruux records via the open CalDAV and CardDAV endpoints (RFC 4791 iCalendar VEVENTs and VTODOs, RFC 6350 vCards), map them into Asana's hierarchical object model (Teams, Projects, Tasks, subtasks), and preserve timestamps, recurrence rules, and organizer data wherever the destination schema supports it. Fruux Bookmarks and proprietary Notes have no standard-format export path and cannot migrate fully. Fruux's conflict-resolution artifacts (duplicate records created when the same item was edited on multiple devices) are deduplicated before import. We do not migrate Fruux task lists as Asana Automations or Rules — those must be rebuilt manually in Asana's Rules engine post-migration.
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 Asana, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Fruux
Calendar
Asana
Project
1:1Fruux CalDAV calendars (RFC 4791 collections) map to Asana Projects. The Fruux calendar name becomes the Asana Project name, and VEVENT components (iCalendar RFC 5545) within the calendar become Asana Tasks. Recurrence rules (RRULE), time zones, organizer, and summary fields from each VEVENT transfer as task fields. We map Fruux calendar color coding to Asana project color options where available. If the Fruux calendar is shared with other Fruux users, the sharing permissions translate to Asana Team membership on the Project during migration.
Fruux
VTODO (Task)
Asana
Task
1:1Fruux VTODO components from CalDAV task collections map to Asana Tasks. The VTODO SUMMARY maps to task name, DUE (DTSTART/DUE) maps to due_date, COMPLETED maps to completed_at, STATUS (COMPLETED/NEEDS-ACTION) maps to task completion status, DESCRIPTION maps to task notes, and PRIORITY maps to a custom numeric priority field or to Asana's native priority system if the customer configures it. Subtasks within a VTODO become Asana subtasks via the parent_task_gid relationship.
Fruux
Task List
Asana
Project Section
1:manyFruux supports multiple task lists per user. Each Fruux CalDAV task collection maps to a separate Asana Project. Within each Project, we create Sections corresponding to any named VTODO categories or grouping properties present in the source. If Fruux task lists contain unnamed or flat tasks without grouping, all tasks import into the default Section of the destination Project.
Fruux
Contact (vCard)
Asana
Custom Field on Task / Person record
lossyFruux CardDAV contacts (RFC 6350 vCard) do not map to a native Asana object because Asana does not have a CRM-style contact repository. We offer two migration strategies: Strategy A — extract vCard fields (FN, EMAIL, TEL, ADR, ORG) and store them as a JSON-formatted custom field value on a dedicated 'Contacts' Project or on individual Tasks that reference the contact. Strategy B — pre-convert vCards to a CSV and import them into the customer's preferred contact management tool (Google Contacts, HubSpot, Salesforce) separately, with a custom field on Asana Tasks pointing to the external contact record by email address. The customer selects Strategy A or B during scoping.
Fruux
Address Book
Asana
Team
1:1Fruux CardDAV addressbook-home-set containers (multiple address books per user) map to Asana Teams at the Workspace level. Each Fruux address book becomes a Team, and the vCard contacts within it are handled via the Contact migration strategy above. If the destination Asana plan supports only one Team, multiple Fruux address books merge into a single Team with address-book-of-origin stored as a custom field on each contact reference record.
Fruux
Calendar Subscription (webcal/ics)
Asana
Project (read-only external source)
1:1Fruux iCalendar subscriptions (webcal:// or https:// .ics feeds) appear as read-only calendars in the Fruux interface. We export the subscription URL and re-register it in Asana as an external calendar integration if the customer's Asana plan supports it, or store the .ics URL in a dedicated Project description for manual re-subscription post-migration. If the subscription URL is private or requires authentication, we flag it during scoping and the customer re-subscribes manually in Asana.
Fruux
Calendar Sharing / Principal ACL
Asana
Project Team Membership
lossyFruux CardDAV and CalDAV sharing is implemented via WebDAV ACL (RFC 3744) principal-privilege bindings. When a Fruux calendar or address book is shared with another Fruux user, we extract the sharing principal URL and map it to an Asana Team membership on the destination Project or Team. The customer's Asana admin provisions matching User records before migration so that sharing ACLs can resolve to Asana User GIDs.
Fruux
Tag / Category
Asana
Tag
1:1Fruux stores category assignments within vCard CATEGORIES and iCalendar CATEGORIES properties. These migrate to Asana Tags, which are a native Asana object accessible at the Workspace level. We create tags in Asana before task import and apply them via the Asana Tags API to each migrated Task. Tag names are preserved exactly as they appear in the Fruux CATEGORIES field; duplicates are deduplicated by name during import.
Fruux
Conflict Resolution Artifact
Asana
Task (flagged for review)
1:1Fruux preserves server-side copies when the same record is edited on multiple devices simultaneously. These conflict artifacts appear as duplicate VEVENT or VTODO entries with identical UIDs but different SEQUENCE numbers or DTSTAMP values. We detect duplicates by comparing UID fields and select the entry with the highest SEQUENCE number as the canonical record. Lower-sequence duplicates are flagged as suspected conflicts and created as separate Tasks with a 'conflict_resolved' custom field set to false, for customer review before deletion.
Fruux
Owner / User
Asana
User
1:1Fruux Owners are identified by email principal URLs in CardDAV and CalDAV ACLs. We extract every distinct Owner email from the Fruux data export and match by email against the destination Asana Workspace's User list. Owners without a matching Asana User go to a reconciliation queue for the customer's admin to provision. Unassigned Tasks default to the migration service account during import and are reassigned post-migration.
Fruux
Bookmarks
Asana
None
1:1Fruux Bookmarks are stored in a proprietary internal format not accessible via CardDAV or CalDAV and have no public export specification. We do not migrate Bookmarks because there is no interoperable export protocol. Customers with heavy Bookmarks usage are notified during scoping and may choose to export Bookmarks manually from the Fruux web interface before account closure. No Asana object provides a native bookmark or URL-repository function.
Fruux
Notes
Asana
Task Notes / Attachment
1:1Fruux Notes are stored in a proprietary format without a CardDAV or CalDAV binding. We attempt extraction via the Fruux web application scraping path, but cannot guarantee structural fidelity, formatting, or complete content preservation. Migrated Notes are written into the notes field of the nearest Asana Task (matched by date proximity or a Fruux-defined task reference if present), or attached as a .txt file to the destination Project if no task relationship is defined. Customers with heavy Notes usage receive a warning during scoping that manual verification of migrated content is required.
| Fruux | Asana | Compatibility | |
|---|---|---|---|
| Calendar | Project1:1 | Fully supported | |
| VTODO (Task) | Task1:1 | Fully supported | |
| Task List | Project Section1:many | Fully supported | |
| Contact (vCard) | Custom Field on Task / Person recordlossy | Fully supported | |
| Address Book | Team1:1 | Fully supported | |
| Calendar Subscription (webcal/ics) | Project (read-only external source)1:1 | Fully supported | |
| Calendar Sharing / Principal ACL | Project Team Membershiplossy | Fully supported | |
| Tag / Category | Tag1:1 | Fully supported | |
| Conflict Resolution Artifact | Task (flagged for review)1:1 | Fully supported | |
| Owner / User | User1:1 | Fully supported | |
| Bookmarks | None1:1 | Not supported | |
| Notes | Task Notes / Attachment1:1 | Mapping required |
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
Asana gotchas
Automation rules have no export representation
API rate limits cap bulk migration throughput
Portfolios are view-only objects that do not hold data
Custom field enum options cannot be updated via API
Subtasks do not appear in project views by default
Pair-specific challenges
Migration approach
Discovery and export via CalDAV/CardDAV
We audit the Fruux account for all principals, address books, calendar collections, task lists, and Notes accessible via the web application path. We connect to dav.fruux.com using CardDAV REPORT queries (addressbook-multiget) and CalDAV REPORT queries (calendarmultiget) to extract RFC 6350 vCards and RFC 5545 iCalendar components. We stream records in batches to avoid memory overflow and capture the full dataset including recurrence exceptions (VEVENT RRULE and EXDATE) and conflict artifacts before any writes to Asana. The discovery output is a record-count inventory by Fruux object type and a custom field requirements document for Asana.
Schema design in Asana
We design the destination Asana structure: one Project per Fruux calendar, Sections per Fruux task list, Tags from all CATEGORY properties, and custom fields (Premium Asana only) for extended VTODO properties. We create the Asana Projects and custom fields via the Asana API before any record import, then capture the Project GIDs for VTODO routing. If the customer is on Asana Starter (no custom fields), we document the unavailable extended-field mappings in the migration report.
Contact strategy resolution and owner reconciliation
We present the two contact migration strategies (JSON custom field vs external CRM) to the customer during scoping. We extract all Fruux Owner email principals and match them against the destination Asana Workspace User list. Owners without a matching Asana User enter a reconciliation queue for the customer admin to provision. Owner resolution must complete before task import because Asana Tasks require an OwnerId reference.
Conflict artifact deduplication
We run a deduplication pass on the Fruux export dataset before Asana import. For each UID with multiple SEQUENCE numbers, we retain the highest SEQUENCE record as canonical and create flagged duplicates as separate Tasks with conflict_resolved=false. The customer reviews and deletes confirmed duplicates post-migration. This step prevents duplicate Asana Tasks from appearing in Projects after migration.
Production import in dependency order
We import into Asana in this order: Users (manually provisioned and validated), Projects (from Fruux calendars), Sections (from Fruux task lists), Tasks (from VTODOs with owner and project GID resolved), Tags (created before task import and applied via the Tags API), contact data (via the customer-selected strategy), and calendar subscriptions (URL re-registration or description note). Each phase emits a row-count reconciliation report before the next phase begins. We use Asana Bulk API operations with batch chunking and exponential backoff to stay within Asana's rate limits.
Cutover, validation, and handoff
We freeze writes to the Fruux account during cutover and run a final delta migration of any records modified during the migration window. We deliver a written inventory of Fruux Bookmarks and Notes that could not be migrated (with estimated record counts) and a note that Rules and Automations do not exist in Fruux and therefore do not require rebuild in Asana. We support a three-day hypercare window for reconciliation issues. Post-migration admin tasks — Asana Rules rebuild, Team permissions configuration, and Portfolio setup — are outside standard migration scope and are handled by the customer's admin team.
Platform deep dives
Fruux
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Standard Project Management migration. 3 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Fruux and Asana.
Object compatibility
3 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 Asana migration scoping. Not seeing yours? Book a call.
Walk through your Fruux to Asana 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 Asana
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.