Project Management migration
Field-level mapping, validation, and rollback between actiTIME and Asana. We move data and schema; workflows are rebuilt natively in Asana.
actiTIME
Source
Asana
Destination
Compatibility
7 of 12
objects map 1:1 between actiTIME and Asana.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Migrating from actiTIME to Asana is a structural remapping: actiTIME's time-tracking-centric hierarchy (Customer → Project → Task → Time Track) has no direct equivalent in Asana, which is a task-and-dependency management tool. We resolve the actiTIME Customer-to-Team mapping during scoping, push task estimates into a numeric custom field in Asana, and preserve time-track entries as structured notes on Tasks since Asana's native Actual Time field is read-only post-creation and does not accept migrated values. The Types of Work taxonomy becomes a single-select custom field, and feature-gated objects (Departments, Time Zone Groups, Leave Time, Workflow Statuses) are audited in the source /info endpoint before any objects are read. Asana Rules and actiTIME workflows are not migrated as code; we deliver a written inventory of every actiTIME workflow requiring rebuild in Asana's Rules engine.
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 actiTIME 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.
actiTIME
Customer
Asana
Team
1:1actiTIME Customers are the top-level organizational container and map to Asana Teams. We create one Asana Team per actiTIME Customer, preserving the Customer name and archived status as a Team description note. If the actiTIME instance has multiple active Customers, each becomes a separate Asana Team so that project scoping and team-based permissions remain intact after migration.
actiTIME
Project
Asana
Project
1:1actiTIME Projects belong to a Customer and map directly to Asana Projects. We preserve estimatedTime and deadline from actiTIME as Asana Due Date and a numeric custom field Estimated Hours. Project status (active, archived) maps to Asana's project archived state. Each Project is assigned to its corresponding Team during import so that project-team membership reflects the source Customer hierarchy.
actiTIME
Task
Asana
Task
1:1actiTIME Tasks map to Asana Tasks. We preserve name, status, estimatedTime, deadline, and custom workflow status. In actiTIME, estimatedTime is a feature-gated field controlled by the taskEstimates flag — we check this flag before reading any estimate data. Where enabled, estimated hours migrate to a numeric custom field in Asana. The actiTIME task's custom workflow stage migrates to a single-select custom field that we pre-create in Asana based on the exported workflow taxonomy.
actiTIME
Time-Track Entry
Asana
Task Note (structured)
lossyactiTIME Time-Track entries represent logged work hours and are the core data object in actiTIME. Asana does not have a native time-track entry object that accepts migrated data — the Actual Time field (task.actual_time_minutes) is read-only and cannot be written via API. We preserve time-track data as structured notes on the corresponding Asana Task, formatted with date, hours, type of work, billability flag, and comments. This preserves the data for reporting but requires a custom Asana report or third-party integration to query time across tasks.
actiTIME
User
Asana
User
1:1actiTIME Users map to Asana Users by email match. We export the complete user roster including active/inactive status and time zone group assignment. Inactive actiTIME users who are still referenced on historical time-track entries are provisioned in Asana as inactive members so that Owner assignment on migrated tasks remains valid. Users without an email match enter a reconciliation queue for the customer's admin to provision.
actiTIME
Department
Asana
Custom Field (single-select) or Team membership
1:1Departments are a feature-gated object controlled by the Departments flag in actiTIME's /info endpoint. Not all instances have this feature enabled. Where enabled, we export the department roster and user assignments. In Asana, we create a Department custom field on the User profile or map users to Teams representing their department — the customer chooses the strategy during scoping. If the actiTIME Departments feature is disabled, no department data exists to migrate.
actiTIME
Type of Work
Asana
Custom Field (single-select on Task)
lossyactiTIME Types of Work (e.g., Development, Meeting, Research) categorise time-track entries and are a read-only taxonomy per instance. We export the full type-of-work list and create a matching single-select custom field in Asana. Every migrated time-track note carries the Type of Work value so that work-type reporting can be reconstructed from the structured note content.
actiTIME
Workflow Status
Asana
Custom Field (single-select on Task)
lossyCustom Workflow Statuses are feature-gated by the taskWorkflow flag in actiTIME's /info endpoint. Where this feature is enabled, we export the current status definitions from the instance and pre-create a matching single-select custom field in Asana before any Task import. If taskWorkflow is false, no workflow status data exists in the instance and this mapping step is skipped.
actiTIME
Task Estimate
Asana
Custom Field (numeric on Task)
1:1Task estimates (planned hours per task) are controlled by the taskEstimates feature flag. We check this flag before attempting to read any estimate data. Where enabled, estimated hours migrate to a numeric custom field Estimated Hours in Asana. Asana's native estimated time field (Custom Field with estimated_time type) is available on Premium and above; we verify the destination workspace tier during scoping.
actiTIME
Leave Time
Asana
Not migrated (external HR system required)
lossyLeave time tracking is feature-gated by the leavetimeRegistration flag in actiTIME's /info endpoint. Where enabled, leave-time records are exported and documented in the migration report, but do not migrate to Asana because Asana does not have a leave-time or PTO object. The customer uses the exported leave-time data to configure an external HR tool (BambooHR, Gusto, Rippling) post-migration. Leave-time records are flagged as requiring separate system setup in the handoff documentation.
actiTIME
Time Zone Group
Asana
Asana User time zone setting
1:1Time Zone Groups group users by timezone in actiTIME for reporting across distributed teams. This feature is controlled by the timeZoneGroups flag. We export the TZG roster and user assignments, then set each mapped Asana User's time zone preference to match the source TZG assignment. Individual user time zones are applied at the User level in Asana rather than as a group construct since Asana does not have a time zone group object.
actiTIME
Locked Timesheet
Asana
Custom Field (checkbox on Task)
lossyactiTIME supports timesheet locking to prevent modification of submitted time entries. Locked time-track entries are detected during the export phase and flagged in the migration report. In Asana, we apply a custom field Locked Timesheet (checkbox) to tasks with associated locked time-track data. Asana does not have an equivalent locking mechanism, so the flag documents the source lock status for the customer's awareness rather than enforcing it at the destination.
| actiTIME | Asana | Compatibility | |
|---|---|---|---|
| Customer | Team1:1 | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Time-Track Entry | Task Note (structured)lossy | Fully supported | |
| User | User1:1 | Fully supported | |
| Department | Custom Field (single-select) or Team membership1:1 | Fully supported | |
| Type of Work | Custom Field (single-select on Task)lossy | Fully supported | |
| Workflow Status | Custom Field (single-select on Task)lossy | Fully supported | |
| Task Estimate | Custom Field (numeric on Task)1:1 | Fully supported | |
| Leave Time | Not migrated (external HR system required)lossy | Mapping required | |
| Time Zone Group | Asana User time zone setting1:1 | Fully supported | |
| Locked Timesheet | Custom Field (checkbox on Task)lossy | 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.
actiTIME gotchas
Basic Authentication only — no OAuth
Feature flags gate entire object classes
Deleting a project permanently erases all associated time-track data
Locked timesheets prevent time-track modification
Batch API maxBatchSize caps concurrent requests
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 feature flag audit
We authenticate to actiTIME using Basic Authentication with a dedicated API service account (requested during scoping if the instance uses SSO or external directory auth). We query the /info endpoint to capture all feature flags — departments, taskWorkflow, taskEstimates, leavetimeRegistration, timeZoneGroups, and maxBatchSize. We export the complete object roster: Customers, Projects, Tasks, Time-Track entries, Users, Types of Work, Workflow Statuses, and any feature-gated objects with their controlling flags set to true. This audit output defines the exact migration scope and identifies which optional objects exist in the source instance.
Schema design and Asana custom field creation
We design the Asana destination schema based on the actiTIME audit. This includes creating Asana Teams (one per actiTIME Customer), Projects (mapped from actiTIME Projects with due dates), custom fields (Type of Work as single-select, Workflow Status as single-select, Estimated Hours as numeric), and workspace-level custom field definitions. We verify the destination Asana workspace tier to confirm that required custom field types are available. Schema is built in the customer's Asana workspace before any data import begins.
User provisioning and reconciliation
We extract every distinct actiTIME User referenced on Tasks and Time-Track entries and match by email against the destination Asana workspace. Inactive actiTIME users are provisioned as inactive Asana members to preserve owner assignment on historical tasks. Users without an email match enter a reconciliation queue for the customer's admin to provision before record import resumes. Time zone assignments from actiTIME Time Zone Groups are applied to the corresponding Asana User profiles.
Team, Project, and Task migration in dependency order
We run migration in dependency order: Teams first (from actiTIME Customers), then Projects (with estimatedTime and deadline preserved as Due Date and Estimated Hours custom field), then Tasks (with workflow status and estimated hours mapped to custom fields, owner resolved via user email match, and parent Project assignment). Each phase emits a row-count reconciliation report. Time-track entries are processed last and written as structured notes on the corresponding Task, preserving hours, date, type of work, and billability flag.
Lock-status flagging and leave-time export
We detect locked timesheet entries during the time-track export phase and flag them in the migration report. For tasks with associated locked time-track data, we apply a Locked Timesheet custom field (checkbox) set to true. Leave-time records are exported as a standalone CSV and documented in the handoff package with a recommendation to configure an external HR tool. Types of Work and Workflow Status taxonomies are confirmed as custom field options and any unmapped statuses are documented for the admin to resolve.
Cutover, delta migration, and workflow inventory handoff
We freeze writes in actiTIME during cutover, run a delta migration of any records modified during the migration window, then enable Asana as the system of record. We disable Asana notifications before migration to prevent team spam. We deliver the actiTIME Workflow inventory document listing every active workflow with its trigger, conditions, and recommended Asana Rules equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild actiTIME workflows as Asana Rules inside the migration scope; that is a separate engagement or an internal admin task.
Post-migration validation and time-tracking strategy
We spot-check 25-50 migrated tasks against the actiTIME source for name accuracy, due date preservation, owner assignment, and time-track note completeness. We verify custom field values (Estimated Hours, Type of Work, Workflow Status) are correctly populated. We document the Asana time-tracking gap — that future time tracking requires Asana's native time-tracking feature or a third-party integration — and provide a recommendation based on the customer's reporting needs. We do not provide post-migration admin training or ongoing workflow support as standard scope.
Platform deep dives
actiTIME
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Standard Project Management migration. 2 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 actiTIME and Asana.
Object compatibility
2 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
actiTIME: maxQueryLimit and maxBatchSize exposed per-instance via the /info endpoint; not publicly documented in general API guide.
Data volume sensitivity
actiTIME exposes a bulk API — large-volume migrations stream efficiently.
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 actiTIME to Asana migration scoping. Not seeing yours? Book a call.
Walk through your actiTIME 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 actiTIME
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.