Project Management migration

Migrate from Z-Stream to Asana

Field-level mapping, validation, and rollback between Z-Stream and Asana. We move data and schema; workflows are rebuilt natively in Asana.

Z-Stream logo

Z-Stream

Source

Asana

Destination

Asana logo

Compatibility

58%

7 of 12

objects map 1:1 between Z-Stream and Asana.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from Z-Stream to Asana is constrained by the absence of a documented Z-Stream public API — every record must be extracted through a manual UI export, reformatted, and loaded into Asana via its REST API or CSV importer. We scope the full export surface during discovery, flag any custom fields or Kanban column configurations that cannot be captured in CSV, and sequence the load so parent records (Projects, Workspaces) are created before child records (Tasks, Subtasks). Z-Stream Milestones map to Asana Milestones where the destination workspace supports them; otherwise we set the milestone date as a task due date and add a milestone_flag custom field. Time entries, budget amounts, and risk register rows map to Asana custom fields or the Timesheets add-on depending on the destination plan. Workflows, client portal permissions, and risk management modules do not migrate; we deliver a written inventory of these for the customer to rebuild in Asana Rules or a third-party integration.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Z-Stream logo

Z-Stream

What's pushing teams away

  • Reviewer base is small (SoftwareWorld and ITQlick reviews number in single digits), so social proof is limited for buyers comparing it against established competitors like Jira or Linear.
  • Reviewers cite a steeper learning curve than rivals because of the comprehensive feature surface area — onboarding new team members takes longer than with single-purpose tools.
  • Built by Zazmic — a services firm — which raises long-term roadmap and continuity questions for buyers worried about the product's product-vs-services balance.
  • Integration footprint is narrow (GitHub, GitLab, Google Sheets) compared to Jira's or ClickUp's hundreds of connectors, forcing teams with diverse stacks to build custom glue.
  • No published public API documentation makes it hard for engineering teams to confirm programmatic access depth before committing.

Choosing

Asana logo

Asana

What's pulling them in

  • Organizations with distributed teams cite Asana's multiple project views (List, Board, Calendar, Timeline) as the primary reason for adoption, allowing each team member to work in their preferred interface without changing the underlying data.
  • The platform's 100+ native integrations with tools like Slack, Google Drive, Salesforce, and Microsoft Teams reduce context-switching and keep work synchronized across the stack.
  • Small teams and non-profits value the free plan's generous limits: unlimited projects and tasks for up to 15 team members with basic views, enabling teams to validate fit before committing to a paid tier.
  • Marketing and creative teams specifically praise Asana's visual project organization, reporting dashboards, and timeline views for managing cross-functional campaign workflows.
  • Project managers report that Asana's dependency management and workload views help surface bottlenecks before they derail deadlines.

Object mapping

How Z-Stream objects map to Asana

Each row shows how a Z-Stream 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.

Z-Stream

Projects

maps to

Asana

Project

1:1
Fully supported

Z-Stream Projects map 1:1 to Asana Projects. We carry Project name, description, start date, end date, status, and owner. The owner resolves to an Asana User by email match. If the Z-Stream project has no direct Asana team equivalent, we create a default team and assign the project to it during migration. Project color labels and custom sort orders are preserved as custom project fields.

Z-Stream

Tasks

maps to

Asana

Task

1:1
Fully supported

Z-Stream Tasks map to Asana Tasks with title, description, assignee (resolved by email to Asana User), due date, priority, and status preserved. Task status from Z-Stream (e.g., Open, In Progress, Closed) maps to Asana completion status (marked complete = true/false) or a custom status field if Z-Stream uses non-binary statuses. We set the Asana start date if Z-Stream carries one; otherwise it remains null.

Z-Stream

Subtasks

maps to

Asana

Subtask

1:1
Fully supported

Z-Stream Subtasks attach to parent Tasks by ID. We preserve the parent-child relationship by seeding all parent tasks first, then creating subtasks with their parent task_gid resolved. Subtasks carry the same field set as tasks (title, assignee, due date, status). Asana subtasks are a native subtype, not a separate object, so no lookup resolution is required beyond the parent task_gid.

Z-Stream

Milestones

maps to

Asana

Milestone

1:1
Mapping required

Z-Stream Milestones are standalone objects tied to Projects. Asana Milestones are a subtype of Task available on Advanced and Enterprise plans. We map Z-Stream Milestones to Asana Milestones with the name, due date, and parent project preserved. If the destination Asana workspace is on Starter, we create tasks with a milestone_flag custom field set to true and a due date set to the Z-Stream milestone date, and note the plan dependency in the migration scope.

Z-Stream

Users

maps to

Asana

User

1:1
Fully supported

Z-Stream Users map by email address and display name to Asana workspace members. Role and permission levels from Z-Stream carry as a custom field role_source__c. Inactive or archived Z-Stream users are imported as inactive Asana members. We reconcile owner references across all objects after the User mapping is complete, flagging any Z-Stream owner without a matching Asana user in the scoping report.

Z-Stream

Gantt Chart Data

maps to

Asana

Timeline view (Dependencies)

lossy
Mapping required

Z-Stream Gantt layout is defined by task start dates, end dates, and dependencies between tasks. We extract this as structured data during export and reconstruct it in Asana Timeline view by creating dependency links (Finish-to-Start) between tasks using the Asana dependencies API. We flag any circular dependency chains detected in the source export and document them in the migration report for the customer to resolve in Asana before go-live.

Z-Stream

Kanban Boards

maps to

Asana

Sections

lossy
Mapping required

Z-Stream Kanban columns correspond to custom status values or stage labels on Tasks. We preserve column order and any column-specific color labels as a custom field zstream_board_column__c on each task. If the customer uses Z-Stream's board view in production, we recommend creating Asana Sections per column and assigning tasks during migration. Column color labels map to a text custom field since Asana does not natively support column colors on Sections.

Z-Stream

Time Entries

maps to

Asana

Timesheet Entry or Custom Fields

lossy
Mapping required

Z-Stream Time Entries are tied to Tasks and Users with hours, date, and optional notes. Asana has no native time entry object on Starter or Advanced; it requires the Timesheets add-on (Advanced and Enterprise). We map time entries to custom fields (time_entry_hours__c, time_entry_date__c, time_entry_notes__c) on the Task for Starter and Advanced migrations, or to the native Timesheets add-on if the destination workspace has it enabled. Hours are stored as decimal numbers; dates are preserved as the original entry timestamp.

Z-Stream

Attachments

maps to

Asana

Attachment

1:1
Mapping required

Z-Stream attachments stored as file references are downloaded and re-uploaded to Asana via the Attachments API. Asana enforces a 100 MB per-file attachment limit. Files exceeding 100 MB are flagged during scoping and carried as URL references in a custom field attachment_url__c rather than migrated as binary attachments. Large attachment sets are chunked by project to avoid API timeout during the upload phase.

Z-Stream

Custom Fields

maps to

Asana

Custom Field

lossy
Mapping required

Z-Stream custom fields on Projects and Tasks are discovered during scoping, and the full field schema (name, type, options) is extracted. We map each to a typed Asana Custom Field using the closest matching type: Z-Stream text to Asana text, numbers to number, dates to date, and multi-option values to multi-select or single-select picklist. If a Z-Stream custom field type has no direct Asana equivalent, we store it as a text custom field and document the mapping decision.

Z-Stream

Comments

maps to

Asana

Stories

1:1
Mapping required

Z-Stream comments attach to Tasks with an author, timestamp, and body. Asana stores conversation history as Stories on tasks. We map Z-Stream comments to Asana Stories preserving the author (resolved to Asana User by email), timestamp, and text body. If the author has no matching Asana user, the comment posts under the migration service account and is noted in the reconciliation report.

Z-Stream

Budget and Risk Registers

maps to

Asana

Custom Fields or Goals

lossy
Mapping required

Z-Stream budget amounts and risk entries are stored as structured fields within Projects or as separate list objects. Asana has no native risk register object. We flatten budget amounts into numeric custom fields (budget_amount__c, risk_score__c, risk_description__c) on the Project. For organizations using Asana Goals, we offer a mapping to Goals with the budget as a metric and risk items as subgoals, though this requires the Advanced or Enterprise plan. We flag the approach choice during scoping.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Z-Stream logo

Z-Stream gotchas

High

No public API means migrations are export-file-only

Medium

No free trial or free plan confirmed

Low

Unverified pricing tier details across sources

Asana logo

Asana gotchas

High

Automation rules have no export representation

High

API rate limits cap bulk migration throughput

Medium

Portfolios are view-only objects that do not hold data

Medium

Custom field enum options cannot be updated via API

Low

Subtasks do not appear in project views by default

Pair-specific challenges

  • No Z-Stream API means all export is manual and format-constrained

    Z-Stream does not publish a REST or bulk API, so every migration out of Z-Stream requires the customer to manually download exports from the web UI. Not all data types are equally exportable: Kanban board columns, custom field option sets, and Gantt dependency chains may export incompletely or not at all depending on the UI's export coverage. We scope exactly which data types are present in the customer's export before migration begins and flag any gaps. If an export is incomplete, we negotiate a partial import, a manual supplementation plan, or a CSV reconstruction from available exports before any data moves.

  • Asana CSV import can misalign dropdown custom field values

    Multiple Asana community reports document a bug where the CSV import preview shows the correct dropdown value but the import writes the next option in the list instead. This occurs with single-select custom fields where the CSV value matches a dropdown option but the import ordering is off by one. We mitigate this by validating dropdown option order in Asana before import and by running a spot-check import of twenty records to confirm value alignment before processing the full set. If misalignment occurs, we pause, correct the CSV value ordering, and re-run the affected batch.

  • Asana 100 MB attachment limit can silently drop large files

    Asana's Attachment API rejects files over 100 MB with an API error. Z-Stream does not publish its attachment size policy. We discover file sizes during the attachment inventory phase and flag any files exceeding 100 MB. These are carried as URL references in a custom field rather than migrated as binary attachments. If the customer has video recordings, design files, or zipped archives attached to tasks, we identify them during scoping and agree on a handling strategy before migration begins.

  • Task dependency cascades can produce red arrows in Asana Timeline

    Asana's dependency engine does not always shift dependent task dates correctly when a predecessor is moved, producing red arrows in Timeline view. Community reports confirm this is an active issue for complex dependency chains. Z-Stream Gantt dependencies are frequently complex with multiple predecessors per task. We extract the full dependency graph, run a topological sort to identify chains, and validate that each dependency resolves to a correct Finish-to-Start or Start-to-Start relationship in Asana. After migration, the customer should run a Timeline integrity check and manually resolve any red arrows before the project goes live.

  • Asana single-select custom fields cap at 500 options

    Asana's custom field documentation states a 500-option limit for single-select fields. Z-Stream does not publish its custom field option limits. If a Z-Stream custom field (for example a status tracker or category list) exceeds 500 options, we split it into multiple single-select fields or map it to a text field in Asana. We discover option counts during the scoping export and flag any field approaching or exceeding the 500-option threshold before migration begins.

Migration approach

Six steps for a successful Z-Stream to Asana data migration

  1. Export scoping and discovery

    We work with the customer's Z-Stream admin to scope exactly which data types are present: Projects, Tasks, Subtasks, Milestones, Users, Time Entries, Attachments, Custom Fields, Gantt dependency exports, Kanban board data, and any budget or risk register objects. We confirm which data types Z-Stream can export from the UI, in what format (CSV, XLSX, JSON), and whether the export covers all fields or only a subset. This discovery phase produces a written Export Surface Inventory that lists every object, field, and any known export gaps before a single record moves.

  2. Schema design for Asana workspace

    We design the Asana destination schema based on the export surface inventory. This includes creating Asana Projects (or Teams if the customer uses the team-based structure), defining Custom Fields with correct types and option sets, configuring Milestone availability (plan-dependent), and setting up any Section structures to replicate Z-Stream Kanban columns. If the Asana workspace is on Starter and the customer has time entries or milestones, we flag the plan dependency and recommend upgrade or custom field alternatives. The schema design is reviewed and approved by the customer before any data is loaded.

  3. Export coordination and data extraction

    The customer performs the Z-Stream export under our written instruction guide, which specifies the export settings needed to capture all required fields. We review each export file for completeness, flag any truncation or encoding issues, and transform the raw export into a schema-matched CSV or JSON payload for the Asana importer. For Gantt dependency exports, we extract the dependency pairs and reconstruct them as structured data for the Asana dependencies API call sequence.

  4. User reconciliation and task seeding

    We extract every distinct Z-Stream user from the export and match by email to Asana workspace members. Any Z-Stream owner without a matching Asana user goes to a reconciliation queue for the customer to provision. We seed Asana Projects first (parent records), then seed Tasks without assignees, then resolve assignees and update task records with OwnerId and assignee_gid. Subtasks are created after all parent tasks exist to satisfy the parent reference. Milestones are created after their parent project is confirmed.

  5. Data load with dependency and attachment processing

    We load records into Asana in dependency order using the Asana REST API for standard record creation and the Bulk API for large sets (over 1,000 records). We handle rate limiting with exponential backoff and chunking. After all tasks and subtasks are loaded, we process Gantt dependencies by calling the Asana dependencies endpoint for each dependency pair. Attachments are uploaded in project-sized batches with size validation against the 100 MB limit. Comments are loaded as Stories after the parent task is confirmed in Asana.

  6. Cutover, validation, and automation inventory handoff

    We freeze Z-Stream access during cutover, run a final delta pass for any records modified during the migration window, then enable Asana as the system of record. We deliver a reconciliation report comparing Z-Stream record counts against Asana record counts for each object type and a random-sample spot-check of twenty records. We provide a written inventory of Z-Stream workflow automation triggers and actions, client portal configurations, and budget or risk module usage for the customer to rebuild in Asana Rules or assess for third-party integration. We support a one-week hypercare window for post-go-live reconciliation issues.

Platform deep dives

Context on both ends of the pair

Z-Stream logo

Z-Stream

Source

Strengths

  • Flat per-user pricing with no per-seat minimums for the base tier
  • Includes Gantt charts, Kanban boards, and time tracking without add-on costs
  • Provides a client portal for external stakeholder access on higher tiers
  • Supports mobile access via browser on iOS and Android
  • Offers budget and risk management modules not common in entry-level PM tools

Weaknesses

  • No documented public API limits any migration to manual export-and-import cycles
  • No free tier or free trial is confirmed, increasing commitment risk before evaluation
  • Customization is not available, reducing flexibility for non-standard workflows
  • English language only with no confirmed internationalization support
  • Hybrid (cloud + on-prem) access model may complicate pure-cloud migrations
Asana logo

Asana

Destination

Strengths

  • Unlimited projects and tasks on the free plan for teams up to 15 members.
  • 100+ native integrations including Salesforce, Slack, Google Drive, and Microsoft Teams.
  • Four distinct project views (List, Board, Calendar, Timeline) in a single interface.
  • Dependency management with start/end dates and predecessor links for critical path tracking.
  • Portfolio dashboards for executives to track cross-project status and workload.

Weaknesses

  • Per-seat pricing scales expensively: Advanced tier costs nearly double Starter for a 50-seat team.
  • API does not expose all UI-accessible data; some fields require screen-scraping for full fidelity.
  • Automation rule limits on lower tiers are restrictive, causing power users to upgrade or leave.
  • No native document/wiki capability forces teams to use external tools for knowledge management.
  • Rate limits (150 req/min on free, 1,500 req/min on paid) constrain bulk migration throughput.

Complexity grading

How hard is this migration?

Standard Project Management migration. 3 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Z-Stream and Asana.

  • Object compatibility

    B

    3 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Z-Stream: Not publicly documented.

  • Data volume sensitivity

    B

    Z-Stream doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Z-Stream to Asana migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Z-Stream to Asana data migrations

Answers to the questions buyers ask most during Z-Stream to Asana migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Z-Stream to Asana migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts with up to 3,000 tasks, no budget or risk registers, and a clean export surface. Migrations with large task hierarchies (over 15,000 tasks), complex Gantt dependency graphs, custom field schemas exceeding twenty fields, or time entries to engineer through the Asana Timesheets add-on move to six to ten weeks. The primary variable is export complexity and the volume of attachments requiring chunked re-upload, not the Asana API performance itself.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Z-Stream.
Land in Asana, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day