Project Management migration
Field-level mapping, validation, and rollback between ProjeQtOr and Jira. We move data and schema; workflows are rebuilt natively in Jira.
ProjeQtOr
Source
Jira
Destination
Compatibility
8 of 11
objects map 1:1 between ProjeQtOr and Jira.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from ProjeQtOr to Jira is a cross-platform migration from a PHP application with no API to a cloud-native platform with a documented REST API. ProjeQtOr stores everything in MySQL or PostgreSQL under a PHP layer, requiring direct database queries or UI-based CSV or XML exports; Jira receives data via its REST or bulk API. The central challenge is extracting ProjeQtOr custom fields correctly, because they use an entity-attribute-value model stored in separate tables rather than direct columns, so a naive column-list export omits every custom field value. We write explicit SQL joins for all EAV rows during scoping, map ProjeQtOr status workflows to Jira Issue status values, and sequence the migration in dependency order: Projects first, then Resources resolved as Jira User accounts, then Issues with their Fix Versions, and finally Risks and Expenses as custom-field-backed Issue records. Document attachments require parallel file transfer since ProjeQtOr stores them as server filesystem references. Jira automations, dashboards, and filters do not migrate; we deliver a written inventory for the customer's admin to rebuild in Jira Automation or Confluence.
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 ProjeQtOr 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.
ProjeQtOr
Project
Jira
Project
1:1ProjeQtOr Projects map directly to Jira Projects. Each ProjeQtOr Project ID becomes a Jira project with a unique project key that must be alphanumeric, uppercase, and 1-10 characters. We extract the project key from ProjeQtOr's Project code field, validate it against Jira's naming constraints, and reserve the key before migration. Project description, status, and start/end dates map to the Jira Project description and date fields. Active ProjeQtOr projects map to active Jira projects; archived projects map to archived Jira projects if the destination supports archival.
ProjeQtOr
Task
Jira
Issue (Story, Task, Bug, Epic)
1:1ProjeQtOr Tasks map to Jira Issues using a type-split rule we define during scoping. Standard project tasks typically become Jira Stories or Tasks depending on the ProjeQtOr task type classification. ProjeQtOr issue and incident types split into Jira Bug Issues. Parent-child task hierarchy from ProjeQtOr maps to Jira's Epic > Story > Subtask hierarchy or to linked Issues with a 'Parent' link type. Planned work hours and actual work from ProjeQtOr map to Jira's Story Points, Time Tracking, or custom number fields depending on the customer's reporting needs. WBS numbering sequences are preserved in the Jira Issue Summary or a custom field for traceability.
ProjeQtOr
Milestone
Jira
Fix Version or Milestone
1:1ProjeQtOr Milestones map to Jira Fix Versions within the target project. Each ProjeQtOr Milestone with a target date and status becomes a Jira Fix Version (release) with the corresponding release date and released/unreleased flag. Milestones that are standalone and not tied to a specific project map to a Jira project we designate as the portfolio or program project, with the milestone name as the Fix Version name. If Jira Advanced Roadmaps is active (Premium/Enterprise), milestones can alternatively map to Plan milestones.
ProjeQtOr
Resource
Jira
User
1:1ProjeQtOr Resources representing team members map to Jira User accounts. We extract resource email addresses as the primary matching key. Resource capacity, calendar availability, and cost rates from ProjeQtOr have no direct Jira equivalent; we preserve them as Jira User properties or custom fields on the User record if the customer requires capacity planning. Resource skills and profile descriptions migrate to the Jira user profile or to a custom User field. Any ProjeQtOr Resource without an email (system or generic resource) is flagged for the customer to provision as a Jira user or consolidate into an existing named user.
ProjeQtOr
Allocation
Jira
Issue Assignee + Sprint Assignment
lossyProjeQtOr Resource Allocations bind a Resource to a Task with a start date, end date, and daily assignment percentage. Jira does not have a native allocation object, so we map allocations to Jira's Assignee field on the Issue and Sprint assignment in the appropriate Jira Sprint. If the ProjeQtOr allocation has a percentage less than 100 percent, we store the original allocation percentage in a custom field on the Jira Issue. For Jira Premium/Enterprise with Advanced Roadmaps, allocation data can be represented as Resource Plans within a Plan.
ProjeQtOr
Expense
Jira
Custom Field on Issue or Attachment
lossyProjeQtOr Expenses capture project costs outside resource billing, including travel, software licenses, and contractor fees. Jira (standard project management tier) does not have a native expense object, so we map expense data to custom number and date fields on the parent Project or on a designated Jira Issue acting as an expense register. Expense category, amount, date, and VAT/tax amounts migrate as structured data. The customer chooses whether to display expenses as custom fields on the parent Project or as a separate Jira Issue with expense records attached.
ProjeQtOr
Risk
Jira
Issue (Risk type)
1:1ProjeQtOr Risks include probability, impact, mitigation plan, and owner assignment. We map these to Jira Issues using a dedicated Risk Issue type that we create in the destination project before migration. Probability and impact values map to custom select fields on the Risk Issue; mitigation plan maps to the Issue description. The ProjeQtOr Risk owner resolves to a Jira Assignee via the User mapping. If Jira Governance (Enterprise) is not available, Risk Issues are created in the same project as standard Issues with a custom field to distinguish them.
ProjeQtOr
Issue / Incident
Jira
Issue (Bug type)
1:1ProjeQtOr Issues and Incidents (including bugs, incidents, and change requests stored in a combined object) map to Jira Issues of type Bug or Task depending on the ProjeQtOr issue type classification. We extract issue type, priority, status, description, and attachments from ProjeQtOr and map them to the corresponding Jira fields. Jira requires a valid Project and Issue Type on creation, so the ProjeQtOr type-to-Jira-type mapping is applied before any Issue records are submitted via the API.
ProjeQtOr
Document
Jira
Attachment
1:1ProjeQtOr Document references stored as server filesystem paths require parallel file transfer to Jira's attachment storage location. We identify all Document records in ProjeQtOr, extract the corresponding files from the application server storage directory, and upload them to Jira using the Issue attachments endpoint or the Jira REST API. Attachment URLs in migrated Jira Issues point to the new Jira attachment location. Binary file content migrates as part of this parallel transfer; the file folder hierarchy from ProjeQtOr is preserved where Jira's attachment structure allows.
ProjeQtOr
Version / Release
Jira
Fix Version
1:1ProjeQtOr Versions track product releases linked to a project with a version name, number, status, and target date. We map these to Jira Fix Versions within the target project. ProjeQtOr version status (planned, in-progress, released, closed) maps to the Jira Fix Version released flag and release date. Version number from ProjeQtOr's versionName field becomes the Fix Version name, and any version description becomes the Fix Version description.
ProjeQtOr
Status Workflow
Jira
Jira Status and Status Category
lossyProjeQtOr supports custom status workflows per object type with statuses defined in a workflow table. We extract the full set of ProjeQtOr statuses per object type and map them to Jira Status values (To Do, In Progress, Done) or custom Status values. Each ProjeQtOr workflow status gets a corresponding Jira status with the same name and color. Jira Status Categories (Todo, In Progress, Done) are assigned based on the ProjeQtOr workflow stage. The Jira Workflow scheme is configured to associate the correct statuses with the relevant Issue types before migration.
| ProjeQtOr | Jira | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Task | Issue (Story, Task, Bug, Epic)1:1 | Fully supported | |
| Milestone | Fix Version or Milestone1:1 | Fully supported | |
| Resource | User1:1 | Fully supported | |
| Allocation | Issue Assignee + Sprint Assignmentlossy | Fully supported | |
| Expense | Custom Field on Issue or Attachmentlossy | Fully supported | |
| Risk | Issue (Risk type)1:1 | Fully supported | |
| Issue / Incident | Issue (Bug type)1:1 | Fully supported | |
| Document | Attachment1:1 | Fully supported | |
| Version / Release | Fix Version1:1 | Fully supported | |
| Status Workflow | Jira Status and Status Categorylossy | 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.
ProjeQtOr gotchas
No API means migrations rely on database exports or UI exports
PHP and database version dependencies constrain self-hosted upgrades
Custom fields stored as EAV rows require careful mapping
File attachments and documents are server-filesystem references
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 database schema extraction
We request a read-only connection to the ProjeQtOr MySQL or PostgreSQL database (or a replica) and extract the full schema including all tables and column names. We audit record volumes across Projects, Tasks, Milestones, Resources, Allocations, Expenses, Risks, Issues, Documents, Versions, and Status Workflows. We examine the EAV custom field tables to enumerate every custom field defined per object type. We review the ProjeQtOr project codes and map them to Jira project key constraints. The discovery output is a written data inventory with record counts, custom field list, and status workflow summary.
Jira destination schema design
We design the Jira destination schema before any data moves. This includes provisioning Jira Projects with validated project keys derived from ProjeQtOr project codes, creating a custom Issue type scheme if the ProjeQtOr object types require Bug, Task, Story, Epic, or Risk types, defining Jira custom fields to receive ProjeQtOr EAV custom field values, and mapping ProjeQtOr status workflow values to Jira Status values and Status Categories. The schema design is validated in a Jira Sandbox or the production Jira site before migration begins, and any required Jira Premium features (Advanced Roadmaps for capacity planning) are identified and scoped.
Data extraction and transformation from ProjeQtOr
We extract data from ProjeQtOr using direct SQL queries against the database. Custom field values are retrieved by explicitly joining the EAV custom field tables to the main record table for each object type. Document attachments are enumerated by querying the document table for file paths, and we initiate a parallel file extraction from the ProjeQtOr server filesystem. We transform ProjeQtOr dates, statuses, and enumerations to match Jira field types and formats. The output of this step is a set of CSV or JSON extracts per object type, ready for Jira API ingestion.
Test migration and reconciliation
We run a test migration using a representative subset of data from each ProjeQtOr object type into the Jira destination. We validate that Issue records land in the correct Projects with the right Issue types, that custom field values are present and correctly formatted, that assignee resolution matches the Resource-to-User mapping, that attachments are accessible in Jira, and that Fix Versions are created with the correct release dates. We reconcile test record counts against the source ProjeQtOr record counts and correct any mapping errors before proceeding to the production migration.
Production migration in dependency order
We run the production migration in record-dependency order to satisfy Jira's foreign key requirements. Projects are created first with their project keys. Resources are resolved as Jira User accounts by email match; any ProjeQtOr Resources without Jira users are held in a reconciliation queue for the customer to provision. Fix Versions are created next. Issues are imported in batches with Project, Issue Type, Status, and Assignee resolved per record. Risks and Expenses are imported as Issue records with custom fields populated from the ProjeQtOr extract. Document attachments are uploaded via the Jira attachments endpoint in parallel with Issue imports.
Cutover, validation, and handoff
We freeze ProjeQtOr writes during the cutover window and run a final delta migration for any records modified during the migration. We validate the final Jira state against the ProjeQtOr source: record counts per object type, spot-checks on 25-50 random Issues for field accuracy, verification that attachment file counts match, and confirmation that Fix Version release dates match ProjeQtOr milestone dates. We deliver a written inventory of all ProjeQtOr automations and status workflows requiring rebuild in Jira Automation or Jira Suite Utilities. We provide a one-week hypercare window to resolve post-migration reconciliation issues raised by the project team.
Platform deep dives
ProjeQtOr
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 ProjeQtOr 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
ProjeQtOr: Not applicable—no API exposed.
Data volume sensitivity
ProjeQtOr 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 ProjeQtOr to Jira migration scoping. Not seeing yours? Book a call.
Walk through your ProjeQtOr 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 ProjeQtOr
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.