Project Management migration

Migrate from BrightWork to Asana

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

BrightWork logo

BrightWork

Source

Asana

Destination

Asana logo

Compatibility

83%

10 of 12

objects map 1:1 between BrightWork and Asana.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from BrightWork to Asana is a two-stage extraction problem. BrightWork publishes no REST API, so all source data runs through SharePoint list export against each Project Area subsite. We extract Projects, Programs, Tasks, RAID Log entries, Custom Fields (implemented as SharePoint list columns), and Attachments, then transform them into Asana's REST API schema. The mapping challenge is BrightWork's per-project custom field model, where columns are defined per Project Area rather than globally—Asana Custom Fields are global but scoped to Projects. We resolve this by exporting each Project Area's column schema, building a unified field map across all projects, and creating Asana Custom Fields with the correct type (text, number, date, enum) before data import. RAID Log entries (Risks, Assumptions, Issues, Dependencies) map to Asana Tasks in dedicated Sections per log type, preserving the structured severity, owner, and status fields. Portfolio Status Reports become Asana Portfolios with a summary task or custom field set. We do not migrate SharePoint workflows, BrightWork automations, or reporting templates as code; we deliver a written inventory for the customer's admin to rebuild in Asana's Rules and Forms.

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

BrightWork logo

BrightWork

What's pushing teams away

  • Some customers find BrightWork too tightly coupled to SharePoint—upgrades, permissions management, and site administration become complex and require SharePoint expertise.
  • G2 reviewers note that BrightWork provides only marginal improvements over vanilla SharePoint, leading teams to question the value of the premium over a well-configured SharePoint intranet.
  • Customers report that many financial and advanced reporting features are locked behind higher pricing tiers, making the entry-level plan limiting for mid-sized PMOs.
  • Organizations outgrowing SharePoint-native project management look for platforms with stronger native API support, more modern UX, and built-in resource management.

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 BrightWork objects map to Asana

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

BrightWork

Project

maps to

Asana

Project

1:1
Fully supported

BrightWork Projects map 1:1 to Asana Projects. We extract the project name, description, start date, end date, assigned Project Manager (as Project Members), and project status, and write them to Asana Projects via the POST /projects endpoint. Project Area subsites are not independently created in Asana; their content becomes part of the parent Project. Program membership (Projects belonging to a Program) maps to Asana Portfolios with the project added as a member.

BrightWork

Program

maps to

Asana

Portfolio

1:1
Fully supported

BrightWork Programs map to Asana Portfolios. We extract the Program name, description, and child project list, then create Asana Portfolio records with all member Projects added via the /portfolios/{portfolio_gid}/addProject endpoint. Portfolio-level Status Reports from BrightWork do not have a direct Asana equivalent; we create a summary task within one of the child Projects or add a custom text field capturing the last report date and status summary.

BrightWork

Task

maps to

Asana

Task

1:1
Fully supported

BrightWork Tasks map directly to Asana Tasks. We preserve name, start date, due date, percent complete, priority (mapped to Asana Custom Field of enum type), assigned owner (mapped to Asana assignee via User lookup by email), and predecessor links. Parent-child task hierarchy maps to Asana subitems (available on Asana Business) or section nesting. Predecessor relationships map to Asana dependencies using the /tasks/{task_gid}/addDependencies endpoint.

BrightWork

Custom Field (SharePoint Column)

maps to

Asana

Custom Field

lossy
Fully supported

BrightWork custom fields are SharePoint list columns defined per Project Area, meaning the same column name can have different data types across projects. We export every Project Area's column schema, build a unified field map, and create Asana Custom Fields with the most permissive compatible type (text if any project uses text, enum if all projects use a common choice set, number if all projects use numeric). Type conflicts (same name, different types across projects) are surfaced for customer resolution before import. Asana Custom Fields are created at the workspace level and then added to relevant Projects.

BrightWork

RAID Log: Risk

maps to

Asana

Task (Section: Risks)

1:1
Fully supported

BrightWork Risks map to Asana Tasks in a dedicated 'Risks' Section within the parent Project. We extract the Risk title, description, severity (mapped to an enum Custom Field with values Low/Medium/High/Critical), owner (assignee), status (Open/Closed/Accepted), and creation date. The RAID risk-specific fields (probability, impact, mitigation plan) migrate to Asana custom fields or task descriptions depending on the number of fields.

BrightWork

RAID Log: Issue

maps to

Asana

Task (Section: Issues)

1:1
Fully supported

BrightWork Issues map to Asana Tasks in a dedicated 'Issues' Section. Issue fields (title, description, priority, owner, status, raised date, resolution date) map to Asana Task fields and custom fields. Open Issues migrate as open Tasks; resolved Issues migrate with a completion date and resolution notes in the task description.

BrightWork

RAID Log: Assumption

maps to

Asana

Task (Section: Assumptions)

1:1
Fully supported

BrightWork Assumptions map to Asana Tasks in a dedicated 'Assumptions' Section. Assumption-specific fields (assumption text, owner, validation date, validation status) migrate to Asana Task fields and custom fields. Unvalidated assumptions migrate as open tasks with a due date matching the validation target date.

BrightWork

RAID Log: Dependency

maps to

Asana

Task Dependency

lossy
Fully supported

BrightWork Dependencies (D in RAID) map to Asana Task dependencies. We extract the source task, target task, and dependency type (finish-to-start by default), then create Asana dependency links via the /tasks/{task_gid}/addDependencies endpoint. Note: Asana's dependency handling has known issues with date propagation on complex dependency chains (red arrow behavior); we document this limitation and recommend customer testing of the dependency chain in the Asana destination post-migration.

BrightWork

Attachment

maps to

Asana

Attachment

1:1
Fully supported

BrightWork attachments live in SharePoint document libraries within each Project Area. We extract the binary files, map them to the corresponding Asana Project or Task via the /attachments endpoint, and preserve the original filename. Large file sets (>500 files per project) are chunked and uploaded with rate-limit handling. Folder structure is preserved in the attachment name prefix for traceability.

BrightWork

Time Entry

maps to

Asana

Custom Field + Task

1:1
Fully supported

BrightWork time entries logged against Tasks map to an Asana Custom Field of number type (Hours Logged) on the Task, plus a completion note capturing the date and user. Asana does not have a native time-tracking object, so the time entry data is stored as a custom field value rather than a separate record. If the customer requires granular time tracking, we recommend pairing with a time-tracking integration (Harvest, Toggl) post-migration.

BrightWork

Document Library

maps to

Asana

Attachment Set

1:1
Fully supported

SharePoint document libraries within a BrightWork Project Area are exported as file sets and uploaded to the corresponding Asana Project as attachments. We preserve the document library folder hierarchy in the attachment naming convention (e.g., /ProjectCharter/2024-Budget.xlsx) so the document organization is visible in Asana's attachment list.

BrightWork

Portfolio Status Report

maps to

Asana

Custom Field Set

1:1
Fully supported

BrightWork aggregates project status into portfolio-level Status Reports. We extract the report date, overall status (green/amber/red), key achievements, risks summary, and next steps, and write them as a custom field set on the Asana Portfolio (using Portfolio Custom Fields if available) or as a summary Task pinned to the Portfolio dashboard. The report attachment (PDF or SharePoint page) migrates as a Portfolio attachment.

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.

BrightWork logo

BrightWork gotchas

High

No public REST API for programmatic data access

Medium

SharePoint versioning can break list export formats

Medium

Custom fields are SharePoint list columns, not a defined schema

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 REST API on BrightWork side requires SharePoint list export

    BrightWork publishes no REST API for external data access. All extraction runs through SharePoint list export against the underlying SharePoint lists that power each Project Area. This requires read access to every Project Area subsite, authentication via SharePoint (OAuth or SharePoint-managed credentials), and version-aware column handling (SharePoint 2019 on-premise serializes Managed Metadata and Person fields differently from SharePoint Online). We handle this by detecting the SharePoint version during scoping, applying version-specific extraction logic, and mapping complex field types to text equivalents or structured JSON. Without this detection step, list exports produce malformed data for Managed Metadata columns.

  • Per-project custom field schemas create type conflicts

    BrightWork custom fields are SharePoint list columns defined per Project Area, not globally. Two different Project Areas can each have a column named 'Priority' but one defines it as a Choice dropdown and the other as a free-text field. Asana Custom Fields are global with a single data type. We detect all column names across all Project Areas, identify type conflicts, and surface them for customer resolution before import. Options include renaming one column, standardizing the type across all projects before export, or accepting that the conflicting column will migrate as a text field in Asana with no validation.

  • Asana custom fields require workspace-level creation before project assignment

    Asana Custom Fields are workspace-level objects. They must be created once at the workspace (or organization) level and then added to individual Projects. BrightWork's per-project column model means a migration with 20 Projects and 10 unique custom field names requires creating 10 Asana Custom Fields and adding them to each of 20 Projects. We handle this programmatically via the Asana Custom Fields API, but customers should be aware that adding a Custom Field to a Project in Asana requires the field to exist first. Large-scale custom field assignment (50+ Projects) adds time to the migration window.

  • Asana task dependencies have known date-propagation issues

    Asana's dependency handling has documented bugs with date propagation on complex dependency chains. When a predecessor task date changes, dependent tasks may not shift to the correct date, producing red arrow indicators in Timeline view. Multiple community reports (September 2024 to February 2025 on the Asana Forum) confirm this issue persists across complex timelines. We migrate the dependency structure correctly per Asana's data model, but the customer should test the dependency chain after migration, particularly for finish-to-start chains longer than five tasks. BrightWork's predecessor links, by contrast, propagate reliably through its Gantt scheduling engine.

  • Portfolio Status Reports and RAID template structures do not migrate

    BrightWork's portfolio-level executive Status Report is a structured SharePoint page with roll-up content from child Projects. This has no direct Asana equivalent. We extract the report content and re-materialize it as a Portfolio summary task or custom field set, but the visual layout, formatted tables, and dynamic roll-up calculations do not carry over. Similarly, BrightWork's PMBOK-aligned project templates (life cycle phases, phase gate fields, RAID log structures) are SharePoint site templates that do not have an Asana migration path. We deliver a written template inventory for the customer's admin to recreate in Asana using Sections, custom fields, and forms.

Migration approach

Six steps for a successful BrightWork to Asana data migration

  1. SharePoint access scoping and authentication setup

    We audit the BrightWork SharePoint environment during discovery: list all Project Area subsites, confirm SharePoint version (2019 on-premise vs. Online/Microsoft 365), document the authentication method (OAuth for M365, NTLM/Kerberos for on-premise), and validate read access to all Project Area lists and document libraries. Any subsites without read access are flagged for the customer's SharePoint admin to grant before extraction begins. This step also inventories the total record count (Projects, Tasks, RAID entries, attachments) for migration sizing.

  2. Column schema extraction and custom field mapping design

    We export the column definition for every SharePoint list across all Project Areas, capturing column name, data type (text, number, date, choice, person, lookup), and whether it is required. We build a unified schema map identifying duplicate column names across projects, type conflicts, and columns with no Asana equivalent. The customer reviews type conflicts and approves the resolution (rename, standardize, or accept as text). We then design the Asana Custom Field creation plan: field name, type, and enumeration values for each Custom Field, plus the list of Projects each field applies to.

  3. Asana workspace provisioning and custom field creation

    We authenticate to the Asana destination workspace using OAuth 2.0 with a service account that has Project Admin rights. We create all Custom Fields via the POST /custom_fields endpoint (workspace-level), then add each Custom Field to the relevant Projects via the PUT /projects/{project_gid}/addCustomFieldSetting endpoint. Enumeration options for choice fields are bulk-created in the same step. We verify that all Custom Fields appear in the correct Projects before proceeding to data import.

  4. SharePoint list export and data transformation

    We run authenticated SharePoint list exports for all Project, Task, RAID, and Custom Field value lists. Exports run per Project Area subsite and produce XML or JSON depending on SharePoint version. We transform the output into Asana API request format (task name, start date, due date, notes, assignee email, custom field values, parent task gid, section assignment). RAID entries are tagged with a Section name (Risks, Issues, Assumptions, Dependencies) that we create in each Project before task import. Predecessor links are resolved to Asana dependency format using task gid mapping built during the transform step.

  5. Attachment extraction and bulk upload

    We export all file attachments from SharePoint document libraries linked to BrightWork Projects and Tasks. Files are organized by parent Project and, where applicable, by parent Task. We upload attachments to Asana via POST /attachments using multipart form encoding, with the parent_task or parent_project gid set correctly. Attachments larger than 100 MB use Asana's chunked upload process. Folder structure is encoded in the attachment name prefix for traceability.

  6. Portfolio assembly and Status Report handoff

    We create Asana Portfolios for each BrightWork Program, adding all child Projects as members via the /portfolios/{portfolio_gid}/addProject endpoint. We extract the last Portfolio Status Report content from BrightWork and create a summary Task in one of the child Projects (or a dedicated Portfolio Summary project) with the status content in the task description and a custom field capturing the report date and overall status (Green/Amber/Red). We deliver this as part of the migration handoff and flag that future status reporting requires manual update in Asana or a reporting integration.

  7. Cutover, validation, and template rebuild inventory

    We freeze SharePoint writes during cutover, run a final delta export of any records modified during the migration window, then mark BrightWork as read-only or decommission. We validate record counts in Asana (Projects, Tasks, RAID entries, attachments) against the source extraction logs and spot-check 20-30 records per object type for field-level accuracy. We deliver the Template and Automation Inventory document listing every BrightWork project template, SharePoint workflow, and RAID log structure that requires rebuild in Asana, with recommended Asana equivalents (Sections, Custom Fields, Rules, Forms). We support a three-day hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

BrightWork logo

BrightWork

Source

Strengths

  • Built natively on SharePoint and Microsoft 365, leveraging existing Office permissions and SharePoint site infrastructure.
  • Portfolio-level dashboards that aggregate status across multiple projects for executive reporting without manual data consolidation.
  • Pre-built project and program templates (including PMBOK-aligned life cycle phases) that accelerate onboarding for new project managers.
  • RAID log management (Risks, Assumptions, Issues, Dependencies) built into the project template with structured tracking fields.
  • Flexible deployment options supporting both on-premise SharePoint and Microsoft 365 cloud environments.

Weaknesses

  • No publicly documented REST API—the primary migration path is SharePoint list export/import, limiting automation and increasing manual effort.
  • No transparent public pricing; prospective customers must contact sales, making budget planning difficult without a discovery call.
  • Very small review corpus on major platforms (2 reviews on G2) makes independent quality assessment challenging.
  • The product adds significant value only within a Microsoft-centric environment, making it a poor fit for organizations with mixed or open-source tooling stacks.
  • SharePoint permissions and site structure add administrative complexity that many customers find disproportionate to the project management features gained.
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 BrightWork 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

    BrightWork: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your BrightWork 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 BrightWork to Asana data migrations

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

Can't find your answer?

Walk through your BrightWork 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 three and five weeks for accounts with up to 15 Projects, 5,000 Tasks, and under 500 RAID entries. Migrations with more than 30 Projects, complex per-project custom field schemas with type conflicts, or large attachment sets (over 1,000 files) extend to seven to twelve weeks because of SharePoint version detection, custom field schema reconciliation, and chunked attachment upload handling.

Adjacent paths

Related migrations to explore

Ready when you are

Move from BrightWork.
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