Project Management migration
Field-level mapping, validation, and rollback between Project.co and Jira. We move data and schema; workflows are rebuilt natively in Jira.
Project.co
Source
Jira
Destination
Compatibility
7 of 10
objects map 1:1 between Project.co and Jira.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Project.co to Jira is a structural migration from a client-facing service workspace to a developer-focused issue tracker. Project.co organizes work around flat client-visible projects with tasks, discussions, and time tracking; Jira uses a nested hierarchy of Projects, Issues, Epics, Stories, Tasks, and Subtasks with configurable workflows and issue types. Project.co has no documented public API, so we choreograph sequential in-app CSV exports for projects, tasks, discussions, notes, and time entries, download files individually, then map everything into Jira via CSV import or REST API. We flag the absence of hourly rates in Project.co time entries (no rate data exists to migrate), reconstruct Jira project keys and issue type schemes during scoping, and map Project.co per-project roles to Jira project permissions. Workflows, automation rules, and reporting configurations do not migrate; we deliver a written inventory for the customer's admin to rebuild in Jira.
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 Project.co object lands in Jira, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Project.co
Project
Jira
Project
1:1Project.co projects map to Jira Projects. We extract project name, description, status, created date, and custom field values via CSV export, then create the Jira Project with an auto-generated project key during scoping. Jira project keys must be uppercase alphanumeric (3-10 characters) and are unique per Jira instance; we resolve any naming conflicts by appending a numeric suffix. Project.co's client-visible flag maps to Jira project's Public/Private visibility setting.
Project.co
Task
Jira
Issue (Story/Task/Bug)
1:1Project.co tasks map to Jira Issues. We map task title to Issue Summary, task description to Issue Description, task status to Jira Issue status (To Do/In Progress/Done or custom workflow statuses), task assignee to Jira Assignee (resolved by email), due date to Due Date, and priority to Jira Priority. Project.co does not have issue types; we configure a default issue type (Story) during Jira project setup, or create separate issue type schemes for Story/Task/Bug if the customer specifies a multi-type configuration.
Project.co
Task (subtask-level)
Jira
Subtask
1:1Project.co subtasks are not a distinct object type; they are tasks with a parent task association. We detect parent-child task relationships from Project.co's task list, then create Jira Subtasks linked to their parent Story or Task via the Parent Link field. If Jira's Subtasks feature is not enabled on the destination project, we create flat tasks with a parent reference in a custom field.
Project.co
Discussion
Jira
Issue Comment
1:1Project.co discussions are per-project threaded message feeds. We flatten each thread as a chronological list of comments with author, timestamp, and body text, then attach each comment to the corresponding Jira Issue as an Issue Comment in thread order. File attachments referenced in discussions migrate as Jira attachments to the parent issue. Mentions and @-references in discussion text are preserved as plain text because Jira mentions require user context at render time.
Project.co
File
Jira
Issue Attachment
1:1Project.co files are stored in project-level folders. We download file binary content and re-upload to Jira as Issue Attachments on the corresponding issue using Jira's REST API. File metadata (uploader name, upload date) is preserved in a custom field if the customer requests an audit trail beyond Jira's native attachment history. We flag the total attachment volume during scoping because individual file downloads extend the export timeline significantly.
Project.co
Note
Jira
Issue Description or Jira Document (Confluence)
lossyProject.co Notes are standalone rich-text documents attached to projects. We map each note's title and content to a Jira Issue's Description field if the note is short and issue-specific. For project-level documentation that does not attach to a single issue, we create Jira Document records (if Jira's native document feature is enabled) or flag the note for manual Confluence page creation post-migration. Formatting is simplified to Jira's Atlassian Document Format (ADF) because Project.co's rich-text schema may not map 1:1.
Project.co
Time Entry
Jira
Issue Worklog
1:1Project.co time entries (task-level with duration, date, and billable flag) map to Jira Issue Worklogs. We preserve duration and date on every worklog entry. Project.co does not store hourly rates, so Jira worklogs inherit no billing rate; we flag this in the scoping report and advise the customer to configure billing rates in Jira if billable time tracking is required. The billable/non-billable flag from Project.co maps to a custom worklog field (billable__c) rather than a native Jira field because Jira does not have a built-in billable flag.
Project.co
Custom Field (Project-level)
Jira
Project Property or Custom Field
lossyProject.co custom fields on projects map to Jira Project Properties (for project-level metadata) or Jira custom fields on the issue schema (for per-issue metadata). We extract custom field definitions (name, type, options) and their values per record. Custom field types including text, number, date, dropdown, and checkbox are mapped to equivalent Jira custom field types. Jira's custom field context (which project or issue type the field applies to) is configured during Jira project setup.
Project.co
Custom Field (Task-level)
Jira
Custom Field (Issue-level)
lossyProject.co custom fields on tasks map to Jira custom fields on Issues. We extract task-level custom field values per task and import them as Jira custom field values on the corresponding issue. If a Project.co custom field uses a picklist with options, we create a Jira custom field of type Single Select or Multi Select and populate the options. Jira requires custom fields to be created and configured (with field context) before data import; we deploy field configuration via Jira REST API or CSV import configuration file.
Project.co
Client (external user)
Jira
Jira User Account
1:1Project.co clients access projects via a client portal link without consuming a paid seat. We extract client email addresses and names and map them to Jira user accounts. Jira's permission model uses project roles (Viewers, Users, Administrators) rather than Project.co's per-project role assignments. We create Jira user accounts for clients and add them to the appropriate project role, but Jira guest access (external users without a full license) requires Jira Cloud with at least a Standard plan. We flag this during scoping because Enterprise-tier Jira Data Center may require different user provisioning.
| Project.co | Jira | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Task | Issue (Story/Task/Bug)1:1 | Fully supported | |
| Task (subtask-level) | Subtask1:1 | Fully supported | |
| Discussion | Issue Comment1:1 | Fully supported | |
| File | Issue Attachment1:1 | Fully supported | |
| Note | Issue Description or Jira Document (Confluence)lossy | Fully supported | |
| Time Entry | Issue Worklog1:1 | Fully supported | |
| Custom Field (Project-level) | Project Property or Custom Fieldlossy | Fully supported | |
| Custom Field (Task-level) | Custom Field (Issue-level)lossy | Fully supported | |
| Client (external user) | Jira User Account1:1 | 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.
Project.co gotchas
No documented public API constrains migration approach
Per-tier team member seat cap is a hard ceiling
Time tracking lacks hourly rate data
Custom domain and branding settings are not exportable
Jira gotchas
Unsupported workflow validators silently skipped during migration
Custom fields converted to flat text labels when migrating to non-Jira platforms
Historical status-change timestamps lost when exporting without a Marketplace plugin
Attachment import failures from oversized files and JQL reference corruption
Points-based API rate limits enforced on Jira Cloud apps from March 2026
Pair-specific challenges
Migration approach
Discovery and Project.co UI export choreography
We audit the source Project.co workspace via in-app CSV exports: Projects list, Tasks list (including subtask parent associations), Discussions (flattened to CSV per thread), Notes list, Time Entries list, and Files inventory (folder path and file names). We identify the total attachment count and flag any projects with over 50 files because large file volumes extend the export timeline. We confirm the Jira destination (Cloud or Data Center, edition, and plan tier) and verify that the Jira user performing the import has admin or project admin permissions. The discovery output is a written migration scope with record counts, file inventory, and Jira project configuration requirements.
Jira project and schema configuration
We create the Jira project with a unique project key, configure the issue type scheme (Story, Task, Bug, Subtask), and define the workflow statuses that correspond to Project.co's task status model. We create any custom fields required by Project.co's custom field schema and set field context so that custom fields appear on the correct issue types. If the customer uses Jira Data Center, we configure the project via Jira REST API or Jira CLI. If the customer uses Jira Cloud, we configure via the Jira project settings UI or REST API. Schema configuration is validated against a test import before production data loads begin.
File download and attachment staging
We download all Project.co file attachments from project-level folders, preserving the original folder path and filename. Files are staged locally or in a cloud storage bucket for re-upload to Jira. If the attachment count exceeds 500, we schedule staged batch downloads to avoid UI export timeouts. We document the total file size and count in the scoping report because Jira Cloud has attachment size limits (10MB per file on Standard, 250MB on Premium/Enterprise) that may require compression or alternative handling for large binaries.
CSV transformation and issue import
We transform the Project.co exported CSVs into Jira CSV import format, mapping Project.co columns (task title, description, status, assignee, due date, priority, custom field values) to Jira CSV fields. We create the Jira CSV import configuration file (CSV mapping to Jira fields and issue type). We run a test import into a Jira sandbox or the production project with a subset of records (typically 50-100 rows) to validate field mapping, status mapping, and issue type assignment. Test import results are reconciled against the source CSV before production import begins.
Production import with user reconciliation
We run the production Jira CSV import with all validated mapping. Jira CSV import runs in the foreground with a progress indicator for smaller datasets (under 10,000 issues); larger imports use Jira's bulk import with background processing. During import, we resolve Project.co user email addresses to Jira user accounts and flag any unmapped users (no Jira account exists) for the customer's admin to provision. After issue import completes, we upload file attachments to the corresponding Jira issues via Jira REST API, maintaining the original folder structure in the attachment comment or description field.
Cutover, validation, and handoff
We freeze Project.co write access during cutover, run a final delta export of any records created or modified during the migration window, and apply the delta to Jira. We deliver a reconciliation report comparing source record counts against Jira issue counts and spot-checking 25-50 random issues against the Project.co source data. We deliver the automation rebuild checklist for Jira workflows and automation rules, and the post-migration handoff checklist covering custom domain reconfiguration (if Confluence is also used), Jira dashboard setup, and user permission audit. We do not rebuild Project.co automations or reporting configurations in Jira as part of the migration scope.
Platform deep dives
Project.co
Source
Strengths
Weaknesses
Jira
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 Project.co and Jira.
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
Project.co: Not applicable..
Data volume sensitivity
Project.co 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 Project.co to Jira migration scoping. Not seeing yours? Book a call.
Walk through your Project.co to Jira migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Project.co
Other ways to arrive at Jira
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.