Importing projects with phases, work packages and tasks

To import projects with their structure, import four files in order: projects, then phases, then work packages, then tasks, each row pointing to its parent by an ID from your old tool. In Swiftly Workspace's Data Import, the importer still calls these Project, Budget, Project Line and Project Task.

Rebuilding twenty live projects by hand takes days and invites mistakes. An import takes four files and some preparation. Most of the work is in that preparation, so this guide starts there.

How the structure maps to the importer

In Swiftly a project is split into Phases, each phase into Work Packages, and each work package into Tasks. The importer still uses older labels for them. Here is how they line up:

In the appIn the importerPoints to its parent withEach row needs
ProjectProjectThe customer's external IDProject number and name, start and end date, project status, billing type, project manager, approving manager
PhaseBudgetThe project's external IDA name, a budget type, a currency code and an effective-from date
Work PackageProject LineThe phase's external IDA description, estimated hours and an hourly rate
TaskProject TaskThe work package's external IDA name, and a status if you have one

So when the importer asks for a "Budget", it means a phase, and a "Project Line" is a work package. How to structure a project into phases, work packages and tasks explains what each level is for.

Prepare before you import

  1. Import your customers. A project finds its customer through the customer's external ID, so customers come in through Data Import before projects.
  2. Mark your managers. Every project needs a project manager and an approving manager from your team. They must have accepted their invitation, and on a Mac an admin turns on Can be Project Manager or Can be Approving Manager for them in Members & Roles, under Manager Permissions. Both start off. These are the same people the New Project form lets you choose, as the Mac project setup guide shows.
  3. Give every row an ID. Each project, phase and work package needs an external ID, usually its ID in your old tool. The level below uses it to find its parent.
  4. Keep one acquisition source. Every import session has an acquisition source that names where the data came from. Use the same one for the customers and all four project files, because parents are looked up within it.
  5. Get the templates. In each session, Download CSV Template gives you the exact column names. Working with import templates explains how to fill them.

Import in four passes

Data Import works one record type per session, so run four sessions in this order: Project, Budget, Project Line, Project Task. In each, upload the file, match the lookups, run Validate and then Commit. A row whose parent can't be found is refused, which is why the order matters. On iPhone or iPad the same sessions work; importing on iPhone or iPad shows the screens.

Matching the lookups

Some columns point at lists your company keeps. Each value in them appears in Lookups, where you pick the matching entry or choose Map to blank, and Commit stays unavailable until every value is handled.

  • Project manager and approving manager: pick the member for each name in your file. There is no default here: a project never gets a manager by guesswork.
  • Project status: the importer offers no list to pick from, so tick Map to blank. The project then gets one of your project statuses, which may not be the right one, so set each project's status after the import.
  • Billing type: pick from your billing types. Mapped to blank, a project falls back to time and materials.
  • Budget type of a phase: pick from your list, or map to blank for a default one.
  • Task status: pick from your task statuses. Left empty or mapped to blank, the task takes your default open status.

Optional lookups, such as a work package's category or a task's priority, can be matched or left blank.

After the import

  • Open a few projects and check the tree: every phase under the right project, every work package and task in place.
  • Set the project statuses you mapped to blank.
  • Check the members of each project and add the people who will log time.
  • Start logging time in Swiftly. Logged hours are not among the record types Data Import takes, so keep past hours in an export from your old tool and start fresh on your cutover date.

If you are moving invoicing at the same time, moving open invoices and payments uses the same customers and acquisition source, and the switching checklist keeps the whole move in order.

Frequently asked questions

Can I import tasks without phases?

No. Each task needs a work package, and each work package needs a phase, because that is how projects are built in Swiftly. A small project can have one phase and one work package that hold all its tasks.

Why can't I pick a project manager during an import?

The list holds members who have accepted their invitation and have Can be Project Manager turned on. Ask an admin to turn it on in Members & Roles, then reopen the lookup.

Can I import time logged on old projects?

Not through Data Import. Keep your old timesheets in an export from your previous tool for reference, and log new time in Swiftly from the day you switch.

What happens if I import the same project file twice?

Rows are matched by their external ID within the same acquisition source, so a second run of a corrected file updates what is there instead of adding copies. Keep the IDs stable between runs.

Run your business on Apple.

Create your account on the web, then set up your workspace in the app on your iPhone, iPad or Mac.

Create your account

Keep reading

  1. How to set up a project with phases on Mac

    On a Mac, open Projects, click + and fill in the New Project window. In the project's Phase tab add a phase, then add work packages and tasks in their own windows, and mark who approves the hours on the Members tab.

  2. Prepare a CSV for import: templates, columns and errors

    Start from the importer's own template, keep its column names, put one record per row and save the file as UTF-8. Most failed imports come from a missing required column, a repeated ID, a badly formatted date or number, or a value the system does not recognize.