Skip to content

Import and export

Move reports, dashboards and portlets between accounts as one .json file.

Import / Export moves report definitions, dashboards and portlet definitions between NetSuite accounts as one .json file: from sandbox to production, from one company to another, or from the HiScale Library into your account. It is under Manage in the sidebar, for admins.

What travels, and what does not

TravelsDoes not travel
Report name, description, category names, SQL, columns, layout, starting filters, refresh interval, rows per page, refresh mode and its two columnsWho can see it: Public, roles, employees, departments, subsidiaries
Portlet definitions, linked to their reportResults, run history, the partial-refresh watermark
Dashboards: name, description, category names, widgets, filter barInternal ids

The columns travel with their formatting: the decimals, the negatives and the percent reading an author set on a column. The account's own Formatting settings do not travel.

A file names every category of a report or dashboard, and the first one again on its own, which is the one an account still on a version before 1.19.0 files it under. A file exported by an older version names one category and imports as it always did. An import files the item under every category the file names.

The file links everything by export key, a 32-character identifier on each report and dashboard, never by internal id, so dashboards, portlets and drill-through links survive the move.

Starting filters follow one rule. A report created by the import opens with the starting filters of the file. A report that already exists keeps its own starting filters when the file has none, and gets the file's when the file has some.

Exporting

  1. Open Import / Export and stay on the Export tab.
  2. Narrow the lists with Filter by name or category if you need to. Each row shows the item's categories and export key.
  3. Tick the reports and dashboards to export.
  4. Leave Include NetSuite dashboard portlets on to take the portlets over the selected reports.
  5. Leave Include the reports each dashboard uses on unless the target account already holds those reports from an earlier import.
  6. Choose Export Selected. The browser downloads a file such as advanced-reports-3-reports-1-dashboard-2026-09-24.json.

The Export tab, with one report and one dashboard ticked

The file

The file is plain JSON. Here is a trimmed example:

{
  "kind": "hss-advanced-reports/export",
  "version": 1,
  "exportedFrom": { "account": "1234567", "envType": "PRODUCTION" },
  "reports": [{ "exportKey": "9f2c…", "name": "Spend by Vendor", "sql": "SELECT …" }],
  "portlets": [],
  "dashboards": [],
  "archive": [{ "name": "Spend by Vendor by Year" }]
}

Before it previews anything, the import checks the file and lists every problem at once. Each report needs a name and SuiteQL, each portlet must name a report in the same file, each dashboard needs a name and a readable layout, and each archive entry needs an exportKey or a name.

Importing

  1. Open the Import tab, then choose a file or drag it onto the box.
  2. Choose an Import mode:
    • Add or update automatically (the default) matches each item to the account, as described below.
    • Add every report as a new copy creates every report again, with a new export key. A name already in use gets a number, such as Sales (2). Use this mode to start a V2 alongside the original. To copy one report inside the same account, you do not need a file: use Make a Copy on the report, described in The report wizard step by step.
    • Overwrite one specific report replaces the definition of the report you pick, which is listed with its id. The file must hold exactly one report. The target keeps its own identity and export key.
  3. Read the preview, under Verdict. Each line says Create or Update with the target's name and id, and lists the portlets, dashboards and archives. The import has written nothing yet.
  4. If the preview offers Include the subsidiary, leave it as it is or change it. See below.
  5. Leave Run the imported reports now ticked, or untick it. See below.
  6. Choose Confirm Import. A results table lists each item's outcome.

The Import tab after a file is chosen: the import mode, the preview, Include the subsidiary and Run the imported reports now

Include the subsidiary

A file can hold one version of its reports for every account, with the parts that need subsidiaries marked: a Subsidiary column in a report, a Subsidiary filter on a dashboard, a chart by subsidiary. The files of the HiScale Library are made this way. The Include the subsidiary box appears under the preview only for such a file.

  • Ticked, the reports get a Subsidiary column and the dashboards a Subsidiary filter. The box starts ticked in an account with subsidiaries (NetSuite OneWorld).
  • Unticked, the import leaves the marked parts out. The reports have no Subsidiary column and the dashboards no Subsidiary filter.

Changing the box runs the preview again. The line under the box says whether the preview is with or without the subsidiary. After Confirm Import, the line under the button says which way the reports were imported.

In an account without subsidiaries, the box is unticked and you cannot tick it. A query that reads the subsidiary cannot run in such an account, so the import always leaves the marked parts out.

To change your choice later, import the same file again with the box the other way. Automatic matching updates the same reports and dashboards in place.

A file you export from your own account has no marked parts. It holds each report as it is in the account, so the box does not appear when you import it.

Run the imported reports now

An imported report has no data until it runs. With Run the imported reports now ticked, which is how every import starts, each report the import created or updated starts building as soon as the import finishes. The line under Confirm Import then says how many reports were queued. One refresh job builds them all, one after another, so a large file takes a few minutes to fill in. Open a report to watch its run.

If another refresh is using the queue at that moment, the line says so. The reports are still set to run, and they start within fifteen minutes, when the schedule next runs.

Untick the box to import the definitions without running them, for example when you want to check each query first. A new report then has no data until its next scheduled refresh or until someone opens it. An updated report keeps the result it had, which may no longer match its new columns, until it runs again. A report set to Manual only has no schedule and waits for someone to open or refresh it.

A report that failed to import is never run.

How automatic matching works

  • A report whose export key is already in the account is updated.
  • Otherwise, the import looks for a report that has no export key, meaning it was built in this account and never exported, with the same name as the file's report, in any case. A file can also give the report's previous name as renamedFrom, so that it can rename a report in place. A match is updated and takes the file's key.
  • The import matches a report that already has an export key only by that key, never by name.
  • Anything else is created.

The import matches dashboards by export key in the same way.

Dependencies

Every report a dashboard uses must be in the file or already in the account, matched by export key. If one is in neither, the preview refuses the whole file, naming the dashboard and the missing report, before it writes anything. A drill-through to a report that is not in the account stays plain text until that report arrives. The import creates a category that does not exist yet, by name, and marks a category it creates for a dashboard as a dashboard category.

Audience after import

A new report or dashboard is visible to nobody except its owner (the person who imported it) and admins until you set its audience. An update keeps the audience the target already had. To publish a batch, open the catalogue or the Dashboards page, choose Select, then Set Audience.

Setting the audience does not run anything. If you unticked Run the imported reports now, choose Refresh Selected in the catalogue to run the batch, or wait for the schedule.

Retiring reports with the archive list

A file can archive the reports it replaces. The archive list names reports already in the account, by exportKey or by exact name. An automatic (in-place) import archives them after the rest of the file is in, exactly as Archive in the catalogue does. The preview shows a line for each entry: Archive with the name and id of the report it found, or Skip archiving with the reason. When the file archives at least one report, a notice above Confirm Import says how many, so you see it before you confirm. After the import, the result table has a line for each archive too.

A skipped entry gives one of these reasons:

  • Not in this account.
  • Already archived.
  • This file also updates it. The update wins.
  • Listed twice.
  • Only an in-place import archives reports. A copy import never archives.

Report updates sent by HiScale

A release of the app changes the app. It does not change your reports, because a report's query, columns and layout are records in your account. When a report from HiScale has to follow a new feature, or turns out to be wrong, HiScale can send the corrected definition to your account. Nobody has to import a file by hand.

What an administrator should know:

  • The update is an import file, the same kind this page describes. It goes through the same checks as an import done by hand.
  • It replaces a report only when it matches by export key or by name, as automatic matching does. A report with no match is created.
  • It never changes who can see a report. An existing report also keeps its own starting filters when the file has none.
  • The refresh job applies the update at its next run, within fifteen minutes, and rebuilds the updated reports in the same run.
  • The file arrives in a private File Cabinet folder of the app, report-updates, through the same SuiteCloud sign-in HiScale uses to install the app. The app has no address that accepts a report from outside the account.
  • HiScale sends an update to one account at a time, on purpose. It is not part of a release.

The account needs version 1.11.0 or later, and its refresh job must be scheduled.

Installing a bundle from the HiScale Library

The HiScale Library on this website offers ready-made reports, dashboards and portlets.

  1. Add the items you want in the Library, then download the bundle: one self-contained file named like hss-advanced-reports-library-2026-09-24.json, in the same format as an export.
  2. In your account, open Import / Export, Import, choose the file and keep Add or update automatically.
  3. Read the preview. If it offers Include the subsidiary, leave the box ticked to get the Subsidiary column and filter, or untick it. In an account without subsidiaries the import leaves them out for you.
  4. Choose Confirm Import.
  5. Set each item's audience. The new reports are already building, unless you unticked Run the imported reports now.

A newer version of the same item later updates it in place, because its export key does not change. Check each new report's figures against your own account before you publish it.

If something looks wrong

What you seeWhy, and what to do
The import lists problems and shows no previewThe file does not pass the checks. Each line names what is missing.
The preview refuses the whole fileA dashboard uses a report that is neither in the file nor in the account. The preview names both.
Overwrite one specific report is greyedThe file holds more than one report.
No Include the subsidiary boxThe file has no marked parts. A file you exported from an account never has.
The box is unticked and greyedThe account has no subsidiaries. The import leaves the marked parts out.
An imported dashboard opens emptyIts reports have not run yet. They are building, or Run the imported reports now was unticked.
Nobody else sees the imported reportsAn import never carries an audience. Set it with Select, then Set Audience.
A report opened on every month after an import before version 1.15.0That version lost a report's starting filters. Import the file again.

A file made by a newer version can hold a kind of widget an older version does not know, such as the comparison table before 1.16.10. The older version imports the file and leaves that widget out of the page. Update the account to see it.

A newer version can also add settings to a widget an older version does know. A stat tile's coloured edge, name and caption came with 1.16.11, a bar chart's series, values and reference lines with 1.16.12, and a second measure with 1.16.13. An older version draws the widget without them: the tile as a plain tile, the chart with one bar for each group. Saving that layout in the older version drops the settings it does not know.

Related: Categories, audience and rights · Archive, restore and housekeeping · Drill-through · Adding a report to a NetSuite dashboard