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
| Travels | Does not travel |
|---|---|
| Report name, description, category name, SQL, columns, layout, starting filters, refresh interval, rows per page, refresh mode and its two columns | Who can see it: Public, roles, employees, departments, subsidiaries |
| Portlet definitions, linked to their report | Results, run history, the partial-refresh watermark |
| Dashboards: name, description, category, widgets, filter bar | Internal ids |
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.
Exporting
- Open Import / Export and stay on the Export tab.
- Narrow the lists with Filter by name or category if you need to. Each row shows the item's category and export key.
- Tick the reports and dashboards to export.
- Leave Include NetSuite dashboard portlets on to take the portlets over the selected reports.
- Leave Include the reports each dashboard uses on unless the target account already holds those reports from an earlier import.
- Choose Export Selected. The browser downloads a file such as
advanced-reports-3-reports-1-dashboard-2026-09-24.json.
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
- Open the Import tab, then choose a file or drag it onto the box.
- 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. - 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.
- Read the preview. 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.
- Choose Confirm Import. A results table lists each item's outcome.
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.
New reports wait for their first run. Choose Refresh Selected, 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 each entry, or why it was skipped:
- 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.
Installing a bundle from the HiScale Library
The HiScale Library on this website offers ready-made reports, dashboards and portlets.
- 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. - In your account, open Import / Export, Import, choose the file and keep Add or update automatically.
- Read the preview, then choose Confirm Import.
- Set each item's audience, then refresh the new reports.
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.
Related: Categories, audience and rights · Archive, restore and housekeeping · Drill-through · Adding a report to a NetSuite dashboard