You can bring your existing data into Avaza from CSV files instead of typing it in again. There are eight imports: companies, contacts, projects, tasks, timesheets, expenses, inventory items and invoices. Each one checks every row before anything is saved, and you can undo an import afterwards.
Only Administrators can import. For everyone else, Import Data is greyed out on the Settings page.
Before you start
- Start from the sample file. Every import has a Download sample file link on its first step. A file built from it matches every column automatically. Columns we look for, on the same step, lists each column, marks the required ones and says what each expects.
- Save as CSV. You need comma-separated values with a header row. In Excel, choose File › Save As › CSV UTF-8 (plain CSV works too). Files separated by tabs or semicolons, as some European versions of Excel save them, are refused. Columns can be in any order, and columns Avaza doesn't need are ignored.
- Add your team first. Timesheets and expenses can only be imported for people with the Timesheet/Expense User or Administrator role, and tasks can only be assigned to people with the Project Collaborator or Administrator role. Tick Add to all new projects for anyone who should join every new project, including imported ones. See managing users.
- Set up what your rows refer to. Taxes in Settings › Taxes (see setting up tax), and in Settings › Project Management your project statuses and categories, task types and task statuses. Invoices also use your payment terms and invoice templates.
- Import in this order when you move a whole account: companies, contacts, projects, tasks, timesheets and expenses, inventory items, then invoices. A row can only point to records that already exist, or that its import is allowed to create (see the table below).
Import a file
Go to Settings › Import Data and click the card for your data, for example Import timesheets. Each card shows when that type was last imported, and by whom.
For companies and contacts you can also start from Contacts: on the Companies or Company Contacts tab, click Import, then Import Companies via CSV or Import Contacts via CSV.
Upload. Drag your CSV onto the page, or click to choose it. Set the Import options described below, then click Continue.
Map columns. Avaza matches your header row to its fields and shows each column with its first value. Change any match in the Avaza field list, or choose Ignore this column. Required fields have a *, and Validate rows only works once each one has a column. Hover over the i beside a field to see what it expects.
Review. Avaza checks every row against the same rules as when you enter data on screen. Nothing is saved yet. When you're happy, click the import button, which shows how many records it will create, check the summary and click Import. The summary also says how long you can undo the import, for example until any entry is invoiced or approved.
Import. Up to 500 records import while you wait. A larger file carries on in the background: you can leave the page, and Avaza emails you when it's finished.
On the Review step:
- The tiles count the Rows, New, Existing, Warnings and Errors. Each row shows its status and the reason.
- New rows are imported. Existing rows match a record already in Avaza and follow your choice for matching records. Warnings are imported too, but tell you something, such as a project that will be created. Errors are left out, and the reason says why.
- All, New and Needs attention filter the rows. Will be created lists the projects, categories, sections or companies the import will add.
- You can change what happens to matching rows here. Avaza then checks the file again.
- Download flagged rows gives you a CSV of the rows with warnings or errors, with the reason added.
- If the same file was imported before, a notice says who imported it and when, and its rows show as Existing. So by default, importing a file twice doesn't create duplicates.
The result screen counts the records Imported, Updated (or Skipped), Rejected and Created along the way. From there you can view the imported records, download the rejected rows, import another file or undo the import.
Import options
The options on the Upload step depend on the data type.
Option | What it does |
|---|---|
If a matching record exists | Update the existing record or Skip the row. Timesheets and expenses offer Import anyway as a new record instead of updating. Invoice numbers that already exist are always skipped. The option says what counts as a match. |
Create missing … automatically | Creates the related records that rows refer to (see the table below). Turn it off to reject those rows instead. |
Date format in the file | yyyy-mm-dd (the default), dd/mm/yyyy or mm/dd/yyyy. |
Number format in the file | 1,234.56 (the default), 1.234,56 or 1 234,56. Currency symbols are ignored. |
If an invoice has an error | Reject only that invoice, import the rest, or Stop the whole import. |
Allow entries on completed tasks | Timesheets only. Lets this import add time to completed tasks on projects set to Don't allow tracking time on Completed tasks, for example when you bring over hours from another system. Those rows show as warnings. |
How matching works
Data type | Matched on | Can create |
|---|---|---|
Companies | Company name | – |
Contacts | Contact email | Companies |
Inventory items | SKU, or item name when the SKU is blank | – |
Projects | Project code when codes are on, otherwise company and project title | – |
Tasks | Project, section and task title | Projects, sections |
Timesheets | Person, date, project, category, task, start and end or duration, and notes | Projects, timesheet categories |
Expenses | Person, date, category, amount and merchant | Projects, expense categories, groups/trips |
Invoices | Invoice number with its prefix | – |
- Companies are never created by the project, task, timesheet, expense or invoice imports. Import them first, or let the contacts import create them.
- Names and emails match whatever their capitals and extra spaces. A name that matches two records, such as two companies with the same name, is rejected. Rename or merge them first.
- A row that repeats an earlier row in the same file is skipped.
- When you update, blank cells keep the current value. Companies never change their name or currency, projects never move to another company, and a project's billing method can't change once it has time logged.
What each import needs
Companies
Company Name is required. Optional: Currency, AddressLine, City, State, PostCode, Country, OverrideAddressDisplay, Phone, Website, Tax Number, Tax Number Label and Comments.
- Currency is a three-letter ISO code such as USD. Blank means your account currency from Settings › General.
- Country is a two-letter ISO code such as AU, or the country's name.
- OverrideAddressDisplay is a free-text address shown instead of the separate address fields.
- Tax Number Label is printed next to the tax number on invoices, for example VAT No. See client tax numbers.
Contacts
Company Name, Contact Email, First name and Last name are required. Optional: Position Title, Phone, Mobile, and the company columns Company Currency, AddressLine, City, State, PostCode, Country and OverrideAddressDisplay.
- The contact joins the company with that name. If there isn't one, it's created when Create missing companies automatically is ticked, using the company columns. Those columns never change an existing company.
- Contacts are added without roles, and nobody is invited or emailed. See managing contacts to give them access.
- When you update, a different Company Name moves the contact to that company.
- A team member's email can't be used for a contact, and an archived person's email is rejected until you restore them. See contacts and email addresses.
Projects
Company Name, which must already exist, and Project Title are required.
- Project Status: one of your project status codes. The defaults are NotStarted, InProgress, Complete and OnHold. Blank uses the status marked Default for new projects.
- Billing Method: NoRate, NotBillable, PersonHourly, CategoryHourly or ProjectHourly. Projects under your own company are always NotBillable.
- Budget Type: NoBudget, ProjectFees, ProjectHours, PersonHours or CategoryHours. Budget Amount goes with ProjectFees, and Budget Hours with the three hours types. See project budgets.
- Timesheet Approvals by Default and Require Tasks on Timesheets: Yes or No.
- Start Date and End Date: the end can't be before the start. Project Notes can be up to 2,000 characters.
- Project Category and Default Task Type must already exist in Settings › Project Management. See project categories.
- Project Code: when codes are on, rows match projects by code first. A new project only takes the code with Manual Codes. See project codes.
Blank settings use your account defaults from Settings › Project Management and Settings › Timesheet Settings. New projects get the same defaults as on screen, including the people marked Add to all new projects, and you become a member of each one.
Tasks
Company Name, which must already exist, Project Title, Section Title and Task Title (plain text, up to 255 characters) are required.
- AssignedTo: one person's email. They need the Administrator or Project Collaborator role and must be a member of the project. People are added automatically to projects this import creates.
- Task Type must exist. Blank uses the project's default type. Task Status is a status of that task type. Blank means NotStarted. See task types and task statuses.
- DateStart, DateDue and DateCompleted are in your local time, as yyyy-MM-ddTHH:mm:ss Z (for example 2017-06-20T18:30:00 Z) or as a plain date in your chosen date format. The start can't be after the due date.
- Estimated Effort: hours as a decimal, such as 1.5.
- Percent Complete: 0, 10, 20 and so on up to 100. Blank follows the status (Not Started 0, In Progress 10, Complete 100), and the status wins when they disagree.
- Subtasks: give each row a unique RowID and put the parent's RowID in the subtask's ParentRowID. Parent rows must come above their subtasks. Subtasks take the parent's project and section. See subtasks.
Timesheets
Timesheet Date, Company Name (which must already exist), Project Title, Timesheet Category, Duration and Email are required.
- Email must belong to an active person with the Timesheet/Expense User or Administrator role. On an existing project they must be a member with timesheet entry allowed, unless they're an Administrator. They're added automatically to projects the import creates.
- Duration: hours as a decimal, so 1.5 is 1 hour 30 minutes, up to 24.
- StartTime and EndTime are used when start and end times are on in Settings › Timesheet Settings, written as 20:00 or 08:00 pm to match your clock setting. When both are filled in, they set the duration, and a different Duration is corrected with a warning. The Duration column still needs to be mapped, but its cell can be blank on those rows.
- Billable: Yes (the default) or No. It sets the billable flag of a timesheet category the import creates or adds to the project. Otherwise the project's settings for that category decide, as on screen.
- TaskTitle links the entry to an existing task in that project.
- isInvoiced: Yes marks time already invoiced in another system, so it can't be added to a later invoice in Avaza. Non-billable entries can't be marked as invoiced.
- Notes can be up to 4,000 characters.
Your timesheet rules apply as on screen: locked periods (for Administrators too), overlapping start and end times when your settings don't allow them, projects that require a task or notes, archived projects and completed tasks. See locking timesheets. If the person's time on that project needs approval, the imported entries wait as drafts.
Expenses
Expense Date, Expense Category, Tax Name, Email and Amount are required. For a unit-price category, such as mileage, you can give a Quantity instead of the amount.
- Email must belong to an active person with the Timesheet/Expense User or Administrator role.
- Tax Name is the name or code of a tax in Settings › Taxes. Amount is: Tax Inclusive or Tax Exclusive (the default).
- Quantity: the amount is the category's unit price times the quantity. It wins over an Amount in the same row.
- Expense Currency: a three-letter ISO code. Blank means your account currency. Exchange Rate is the expense amount divided by the amount in your account currency (for AUD 140 = USD 100, it's 1.4). Blank looks up the market rate for the expense date. See multiple currencies.
- Billable and Reimbursable: Yes or No (the default).
- Company Name must match an existing customer. It's required when Billable is Yes, and to find a Project Title. A ProjectCode overrides the title.
- Group/Trip Name, Merchant Name, Merchant Tax Number and Notes are optional.
Inventory items
Item Name is required, up to 200 characters, and each name can only be used once. Optional: Description, SKU, Sale Price, Cost Price and Tax Name, which must be the name or code of a tax in Settings › Taxes. An item matched by name takes the row's SKU when you update. See inventory items.
Invoices
Each row is one line item. The invoice's own fields are read from the first row of each invoice number, so two invoices with two and one lines make three rows. Imported invoices are drafts.
- InvoiceNumber and DateIssued are required, plus CompanyID or CompanyName. TransactionPrefix (up to 20 characters) defaults to your account's prefix.
- The prefix and number together identify an invoice, and ones that already exist are skipped. A whole number is stored as the invoice number, and anything else as a code of up to 30 characters.
- CompanyID wins when both are given. A CompanyName that matches several companies is rejected. The invoice is in the company's currency, and ExchangeRate is only for currencies other than your account's. Blank uses the market rate on the issue date.
- InvoiceTemplateName must match a template exactly. Blank uses the company's default template, or your account's. See invoice templates.
- PaymentTerms is one of your payment term periods, in days. You start with -1 (Custom), 0 (Upon Receipt), 7, 15, 30, 45 and 60. Blank uses the customer's default. A DueDate sets the terms to Custom and can't be before the issue date. Without one, it's calculated, so Custom terms need a DueDate.
- TaxConfigCode: EX if unit prices exclude tax, INC if they include it. Blank uses your account default.
- Subject (up to 255 characters), CustomerPONumber (100) and Notes (2,000) take plain text without HTML.
- Each line needs an existing item by LineItemInventoryItemSKU or LineItemInventoryItemName (the SKU wins), plus LineItemQuantity, LineItemUnitPrice and LineItemTaxName. LineItemDiscount is a percentage, so 10.5 means 10.5%. LineItemProjectTitle links the line to one of the customer's projects and must match only one.
Custom fields
For companies, contacts, projects and tasks, each custom field is an optional column headed CF: and the field name, for example CF: Region. Separate several values with |. An import never creates fields or options. See custom fields.
Limits
- File size: up to 10,000 rows, 10 MB and 500 columns. Split a bigger file.
- One import at a time: while an import is running, you can't start another in the same account.
- Plan limits: new projects count towards your plan's active project limit, whether a project, task, timesheet or expense import creates them. Archived projects don't count, so archive finished ones to make room. New companies count towards the external company limit. Imported invoices count towards the monthly invoice limit in the month you import them, whatever their issue date. See plans.
Fix rejected rows
The result screen sums up why rows were rejected, for example "6 rows were rejected: 4 overlaps, 1 locked period, 1 unknown user." Click Download rejected rows, fix each row using the Reason column, and import that file. Rows that already imported match as Existing and are skipped.
Message | What to do |
|---|---|
No timesheet user with email … | Check the email, and that the person is active with the right role. |
Company "…" doesn't exist | Import the company first, or fix the name. |
"…" matches 2 companies | Rename or merge them. For invoices, use CompanyID. |
… doesn't exist — turn on automatic creation or add it first | Tick the Create missing … option, or add the record. |
… isn't a date in the yyyy-mm-dd format | Choose your file's Date format on the first step. |
… isn't a number in the 1,234.56 format | Choose your file's Number format on the first step. |
Timesheet is locked | The date is in a locked period. |
… overlaps existing entry … | Fix the start and end times. |
This file uses semicolons … | Save it again as comma-separated CSV. |
Import history and undo
Import history, at the top of Settings › Import Data, lists every import: when, who, the type, the file, the counts and the status. Filter it by data type or person, and click a date to open that import.
Undo, on the result screen or in Import history, deletes every record the import created. It works while none of them has been used elsewhere. When you click it, Avaza tells you what's in the way, for example entries that are invoiced, approved or in a locked period, tasks with time or comments, or invoices that are no longer drafts.
- An undo can't be reversed. It doesn't change records the import updated, and it keeps related records created along the way, such as projects.
- Large undos run in the background, and Avaza emails you when they're done.
- Avaza keeps the uploaded file for 30 days after the import finishes, so its rows can be downloaded. The file doesn't count towards your storage.
- Imports and undos appear in the activity feed, and send the same webhooks as records added on screen, so connected apps see them.
Moving from another tool
- Export your data from the old tool as CSV files, or save its Excel exports as CSV.
- Add your team and set up taxes and categories, as above.
- Import the files in order, matching their columns on the Map columns step. Mark time you've already billed with isInvoiced.
- Reconnect: set up the Xero or QuickBooks Online integration and online payments, and add your customers to their projects.
If you'd like help moving your data, Avaza offers paid migration assistance. Send your requirements to support@avaza.com.