Project Management migration
Field-level mapping, validation, and rollback between Function Point and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Function Point
Source
Asana
Destination
Compatibility
7 of 14
objects map 1:1 between Function Point and Asana.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Function Point to Asana is a structural migration that flattens Function Point's multi-layer agency model into Asana's task-centric workspace. Function Point's Jobs (the work-order unit carrying budget, cost codes, and billing) do not map to a native Asana object; we decompose them into Projects for financial context and Tasks for execution, with budget and cost-code fields preserved in Asana custom fields. Timesheets with billable flags migrate to Asana's native time tracking, and Expenses export as a structured CSV for manual entry or third-party add-on integration. Function Point's native CRM objects (Companies and Contacts) have no Asana equivalent — we migrate them as member and contact records in the Asana Organization, and we flag the API-exclusion of custom fields on these objects as a manual-recovery step. Workflows, automations, QuickBooks sync rules, and rate schedules do not migrate; we deliver a written inventory of these for your admin to rebuild in Asana Rules or a compatible billing add-on.
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 Function Point 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.
Function Point
Company
Asana
Organization Member or Project custom field
1:1Function Point Companies map to Asana Organization members for internal team records and to Asana guest member profiles or Projects with a Company custom field for external client records. Address, billing contact, and account-manager fields migrate to Asana custom fields on the associated Project. If the Company has associated Contacts, those Contacts migrate as Asana members or guest profiles with the Company reference preserved in a custom field.
Function Point
Contact
Asana
Organization Member (guest) or Project custom field
1:1Function Point Contacts attach to a parent Company and map to Asana Organization members (if they are team users in Function Point) or guest profiles. We preserve the Contact's name, email, phone, and notes as Asana profile fields and custom text fields. Custom fields on Contacts are API-excluded per Function Point's documented design — we flag these during scoping and provide a manual-recovery CSV that the customer's admin enters manually post-migration.
Function Point
Project
Asana
Asana Project
1:1Function Point Projects are the top-level container and map directly to Asana Projects. Project status, start date, end date, and budget fields migrate to Asana's Project due date, custom date fields, and a budget custom field. The Project's linked Companies become a custom multi-select or text field linking back to the client.
Function Point
Job
Asana
Asana Project or Section within Project
1:manyFunction Point Jobs are the primary work-order unit carrying cost codes, budget thresholds, and financial status. We decompose Jobs into Asana Projects for standalone deliverables or Asana Sections within a parent Project for sub-work packages. Budget and cost-code fields from the Job migrate to Asana custom fields on the receiving Project or Section. A Job status field (Active, On Hold, Completed) maps to an Asana custom single-select field for tracking. Jobs linked to Estimates carry financial data that requires the Estimate to be processed first.
Function Point
Task
Asana
Asana Task
1:1Function Point Tasks live inside Jobs and map directly to Asana Tasks. Parent Job association is preserved by placing the Task in the appropriate Asana Project or Section. Task status labels (custom in Function Point) map to Asana's custom single-select status field. Assignee, due date, and description migrate as-is. Notes attached to Tasks in Function Point migrate as Asana Task descriptions, with long notes chunked if they exceed Asana's description character limit.
Function Point
Estimate
Asana
Asana Project custom fields or Portfolio tracking sheet
lossyFunction Point Estimates contain line items with service names, quantities, rates, and markup percentages that do not map to a native Asana object. We extract the full Estimate and preserve it as a structured CSV alongside a set of Asana custom numeric fields on the Project (estimated hours, estimated total, markup percentage) that reference the Estimate value. The customer's billing team reviews the CSV post-migration. If the customer uses a billing add-on (for example, a cost-tracking Power-Up), we can map the Estimate line items to that tool's data model during migration.
Function Point
Timesheet
Asana
Asana time tracking entries (per-task log)
1:1Function Point Timesheet entries (user, date, hours, Job/Task association, billable/non-billable flag) map to Asana time tracking entries logged against the corresponding Task. We use the Asana API to create time entries with the original date and duration. The billable/non-billable flag from Function Point migrates to a custom single-select field on the Asana time entry. Per-user rate schedules are extracted separately and documented in a rate-table CSV for manual entry into Asana's billing configuration or a third-party add-on.
Function Point
Expense
Asana
Asana Project custom fields + Expense CSV export
lossyFunction Point Expenses are logged per Job or Project with vendor, amount, date, description, and posted/unposted status. We export all Expenses as a structured CSV with Project, Job, vendor, amount, and status columns. For Asana Projects that have an associated expense-tracking add-on or integration, we map the expense records to that tool's data model. Without an add-on, Expenses do not have a native Asana representation and the CSV serves as the financial reconciliation document for the billing team.
Function Point
Invoice (Posted)
Asana
Asana Project custom fields or external billing system
lossyFunction Point Posted Invoices map to a completed billing status preserved in a custom field on the related Project. The invoice total, client, and payment status migrate to a billing custom field set. Asana has no native Invoice object, so Posted Invoice data is preserved as a CSV export with invoice number, client, total, status, and date. The customer's finance team reconciles this against their accounting system post-migration.
Function Point
Invoice (Draft)
Asana
Asana Project custom field or pending billing CSV
lossyFunction Point Draft Invoices cannot export to QuickBooks via IIF and similarly have no Asana equivalent. We flag Draft invoices during scoping, separate them from Posted records, and preserve them in a Draft-billing CSV with a pending-review flag. The customer reviews this list post-migration before finalizing or voiding the drafts in Function Point before cutting over to Asana.
Function Point
Brief
Asana
Asana Project description or Document integration
1:1Function Point Briefs hold project briefs and creative direction as unstructured content. We extract Brief text via CSV and map it to the Asana Project description field, with long briefs chunked into the Project description and additional Tasks created as Brief sections for sequential reading. If the Brief contains file attachments, those files migrate as Asana Project attachments (subject to the 100 MB file size limit per attachment).
Function Point
Service Groups and Services
Asana
Asana custom fields (multi-select) or Portfolio tracking
1:1Function Point maintains a service catalog (Service Groups containing Services with rates) used in Estimates. We export the full service catalog as a CSV and create corresponding Asana custom multi-select fields on Projects for service categorization. The rate table from the service catalog is included in the rate-table CSV for manual entry into Asana's billing configuration or a third-party tool.
Function Point
Rates and Markups
Asana
External rate table CSV for manual configuration
lossyFunction Point per-user and per-role rate schedules with markup percentages do not map to any Asana native object. We extract the complete rate table (user, role, rate, markup percentage) as a structured CSV that the customer's admin reviews and enters into Asana custom fields, a billing add-on, or a spreadsheet for internal reference. This step adds one to two business days to the migration timeline and is completed before the Timesheet phase.
Function Point
Custom Fields (Companies and Contacts)
Asana
Manual recovery required — no API access
lossyFunction Point's REST API explicitly excludes custom fields created in Admin > System Set Up for Companies and Contacts. This is a documented design exclusion, not a temporary limitation. We cannot retrieve these values through any endpoint. During scoping, we identify every custom field on these objects, export the data via CSV from Function Point's module Find page, and provide a manual-recovery plan: the customer enters the values into Asana custom fields on the relevant Projects or member profiles post-migration.
| Function Point | Asana | Compatibility | |
|---|---|---|---|
| Company | Organization Member or Project custom field1:1 | Fully supported | |
| Contact | Organization Member (guest) or Project custom field1:1 | Fully supported | |
| Project | Asana Project1:1 | Fully supported | |
| Job | Asana Project or Section within Project1:many | Fully supported | |
| Task | Asana Task1:1 | Fully supported | |
| Estimate | Asana Project custom fields or Portfolio tracking sheetlossy | Fully supported | |
| Timesheet | Asana time tracking entries (per-task log)1:1 | Fully supported | |
| Expense | Asana Project custom fields + Expense CSV exportlossy | Fully supported | |
| Invoice (Posted) | Asana Project custom fields or external billing systemlossy | Fully supported | |
| Invoice (Draft) | Asana Project custom field or pending billing CSVlossy | Fully supported | |
| Brief | Asana Project description or Document integration1:1 | Fully supported | |
| Service Groups and Services | Asana custom fields (multi-select) or Portfolio tracking1:1 | Mapping required | |
| Rates and Markups | External rate table CSV for manual configurationlossy | Mapping required | |
| Custom Fields (Companies and Contacts) | Manual recovery required — no API accesslossy | Not 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.
Function Point gotchas
Custom fields on Companies and Contacts are API-inaccessible
No API delete operations means relational cleanup must go through CSM
Invoice migration requires separating Posted from Draft records
API access requires an active CSM relationship and developer resources
Rate and markup schedules require custom mapping to destination billing models
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 API access verification
We audit the Function Point instance across all modules — Companies, Contacts, Projects, Jobs, Tasks, Estimates, Briefs, Timesheets, Expenses, and Invoices — and count active records, custom field usage, and API access status. Function Point API access requires a CSM request and is gated behind the Professional or Enterprise tier; we verify access is enabled before extraction begins. We also count the total Jobs to assess proximity to Asana's 10,000-job sync limit, identify any custom fields on Companies and Contacts (flagged for manual recovery), and document the Estimate and Invoice structure to scope the financial mapping phase. The discovery output is a written migration scope with record counts per module and a custom-field inventory.
Asana workspace design and custom field schema
We design the Asana workspace structure before any data moves. This includes creating the Organization and Teams (mapped from Function Point's organizational structure), provisioning all Projects with the appropriate Sections for Job decomposition, and adding custom fields to each Project before task import. Custom fields added include budget (numeric), job status (single-select), cost code (text), billable flag (single-select), and any client or company reference fields. The custom field schema is validated in Asana before record import begins.
Sandbox migration and reconciliation
We run a full migration into a test Asana workspace using production-like data volume. The customer's project manager and agency owner reconcile record counts, spot-check 25-50 random records against the Function Point source, and review the financial mapping from Estimates and Expenses. Any field mapping corrections, custom field additions, or Job-to-Project decomposition decisions happen at this stage. We do not run production migration until the sandbox sign-off is received.
User reconciliation and member provisioning
We extract every distinct Function Point user referenced on Timesheets, Tasks, Jobs, and Expenses and match them by email against the Asana destination Organization's member list. Any Function Point user without a matching Asana member goes to a reconciliation queue. The customer's admin provisions any missing Asana members (active or guest depending on role). Owner assignment on migrated records cannot proceed until all referenced users have an Asana account.
Production migration in dependency order
We run production migration in record-dependency order: first Companies and Contacts (with the manual-recovery CSV for custom CRM fields prepared in parallel), then Projects and the Jobs decomposed into Projects or Sections, then Tasks with custom field values resolved against the pre-built field schema, then Briefs as Project descriptions and supplemental Tasks, then Timesheets via the Asana time tracking API with billable flags preserved, then Expenses as a structured CSV export with Project references. Each phase emits a row-count reconciliation report before the next phase begins. Estimates, rate schedules, and invoice data are processed in a final financial phase with the rate-table CSV reviewed by the billing team before finalization.
Cutover, validation, and handoff
We freeze writes in Function Point during cutover, run a final delta migration of any records modified during the migration window, then enable Asana as the system of record. We deliver a written inventory of every Function Point Workflow, automation, QuickBooks sync rule, and rate schedule that requires rebuild in Asana Rules, a compatible billing add-on, or an external system. We support a one-week hypercare window for reconciliation issues raised by the team. We do not rebuild Function Point Workflows or automations as Asana Rules inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Function Point
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 Function Point 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
Function Point: Not publicly documented in public-facing help articles; rate limits are not disclosed on the API documentation portal.
Data volume sensitivity
Function Point 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 Function Point to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Function Point 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 Function Point
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.