Skip to main content
A CSV import creates new supplies in bulk. It never updates or deletes existing supplies. A CSV export downloads the whole catalog as a file, with costs only for people allowed to see them.

Who can do it

Import and export are marked as sensitive actions. MFA is optional on the current release and does not block them; if the console ever shows Verify your identity to continue., confirm with your authenticator app and try again. See Account security and Roles and permissions.

Where

There is no list of past imports. Keep the address of the Import status page if you want to check it later.

Prepare the file

The Import CSV screen (Add supplies from a CSV file. Existing supplies are not updated.) includes a guide, Preparing your file, with:
  • Required columns and Optional columns.
  • Allowed units and Allowed criticalities, with their codes.
  • Download column template: a file named muveya-catalog-template.csv with the header row only.
  • Category IDs for your CSV: each Category name next to its categoryId, with Copy category ID.

File format

  • Plain CSV with a comma as separator. Fields that contain commas, double quotes or line breaks go between double quotes, and a double quote inside them is written twice ("").
  • Encoded as UTF-8, with or without a byte order mark. In a spreadsheet, save as “CSV UTF-8”.
  • The first record is the header. Column names are the English names below, written exactly (letter case counts), in any order.
  • Columns muveya does not know are ignored. If a column appears twice, the first one is used, except unitOfMeasure, cost, currency and the cost metadata columns: a duplicate of any of them rejects the whole file.
  • Empty lines are skipped. Spaces around each value are removed.
Spreadsheets set to Spanish or Portuguese often save CSV files with semicolons. muveya reads such a file as a single column, and the import fails with The file does not contain the required CSV columns. Save with commas.

Columns

Example:
The second row has no cost: both cost and currency are empty.

Limits

Import supplies

1

Prepare the categories

Create any missing categories first and copy their ids from Category IDs for your CSV. See Categories.
2

Choose the file

In Import CSV, click CSV file and choose your .csv file.
3

Upload

Click Import supplies. When the file is accepted, the console opens Import status.
4

Follow the progress

The page refreshes by itself while the import is received or running. Refresh status checks again at any time.
5

Review the result

Read the counts and the rejected rows. Fix those rows in a new file and click Import another file.
6

Activate the new supplies

Imported supplies are drafts. Open each one and activate it when it is ready to be ordered. There is no bulk activation. See Catalog items.

Import statuses

Once finished, the page shows Data rows, Created and Rejected. If any row was rejected, it adds Some rows were rejected. Review their reasons before uploading a corrected file. and a table with Data row and Reason. Each row is independent: a rejected row never stops the others, and rows created before a rejection stay created.

Row numbers

Rows count data records, excluding the header; a CSV record can span multiple text lines. Data row 1 is the first record after the header. Empty lines are not counted, and a quoted value with line breaks counts as one row, so a data row number can differ from the line number your editor shows.

File-level failures

Rejected rows

To fix rejected rows, build a new file with only those rows, corrected. Leave out the rows that were created: they would now be rejected with This SKU already exists.

Imports never update supplies

  • An import only creates supplies. A row whose SKU already exists is rejected, whatever its other values. To change existing supplies, edit them in the console.
  • Inside one file, the first row with a given SKU is created and later rows with the same SKU are rejected.
  • Uploading the same file twice creates nothing the second time: every row is rejected as an existing SKU.
  • If processing is interrupted and resumed, muveya remembers which rows it already created and does not create them again.
  • A cost in a row becomes the supply’s current cost, confirmed for the imported unit. See Costs.

Export the catalog

1

Start the export

In Catalog, click Export CSV. The file is generated right away.
2

Download

Click Download CSV. Below the link, Link expires: shows the date and time.
The link is valid for 5 minutes. After that the console shows This link expired. Generate a new export.; click Export CSV again. If the console cannot verify the link, it shows The download link could not be verified. Generate a new export.

Export contents

The file is named catalog.csv and contains every supply of the dental clinic, in every status, oldest first.
  • Empty optional values are empty cells; tracking columns are true or false; cost and currency are empty when the cost is unset.
  • The file is UTF-8 with a byte order mark, comma separated, with Windows line endings, so spreadsheets open accented names correctly.
  • A value that starts with =, +, - or @ is written with a leading apostrophe ('), so a spreadsheet does not run it as a formula.
  • Categories appear as categoryId, not by name. Presentations, package codes and stock are not exported.

Re-importing an export

An export has the same column names as the import, so you can use it as a starting point, for example to load the same catalog into another dental clinic. Before uploading:
  • Replace each categoryId with the ids of the destination dental clinic.
  • Remove the apostrophe that the export added before values starting with =, +, - or @.
  • The status column is ignored: every supply is created as a draft.
  • If the file has the cost columns, each row’s costStatus decides what happens:
    • unset: all the other cost cells must be empty.
    • verified: costUnitOfMeasure must equal unitOfMeasure, costMeasurementVersion must be a whole number from 1, costQuantityProtocol must be base_number_v1, cost a whole number and currency three uppercase letters. Otherwise the row is rejected with Review the fields in this row.
    • review_required or invalid: the row is rejected with The recorded cost needs review. Confirm its unit and amount before importing this row.
    • Empty or any other value: the row is rejected with Review the fields in this row.
  • Re-importing into the same dental clinic creates nothing, because every SKU already exists.

What the system records

The import also keeps, for each data row, whether it was created and the reason when it was not. It never stores cost values in that summary. The current release has no screen to browse the audit log.

What can go wrong when uploading or exporting

The public API does not import or export the catalog. To read it from another system, use GET /v1/catalog/items. See the API reference.

Catalog items

Field rules and activation.

Categories

Create categories and find their ids.

Costs

Minor units and cost states.

Roles and permissions

Roles that can import and export.