Sites

Bulk Import Sites

Importing sites in bulk from Excel makes it possible to import thousands of sites with their hierarchy structure in minutes. Compared to manually creating sites one by one, it's a convenient and efficient method.

Before getting started

Before we actually start and download the Excel template, there are a couple of important notes with bulk importing sites into 21RISK:

  • You can import the site name, hierarchy levels (level1 through level6), and address information.
  • Site names must be unique (case-insensitive) — you cannot import a site with a name that already exists, even if the casing differs (e.g., "London" and "london" are considered the same).
  • Hierarchy levels must be contiguous - you cannot skip levels (e.g., having level1 and level3 but not level2).
  • Hierarchy names must be consistent - if "Europe" is used at level2 in one row, it cannot be used at level1 or level3 in another row.
  • You must have permission to create sites.

Custom Columns

Great news - site custom columns are fully supported when bulk importing sites 🎉

If you have created site custom columns , they will automatically appear in the Excel template when you download it. This means you can populate custom column values for all your sites in one go, making bulk imports even more powerful.

Download the template

To download the template for bulk import, navigate to "Sites" after logging in to 21RISK.

Now, let's click on the "Search" button in the left side of the screen, or click "Ctrl/Cmd + K"

This should bring up the command palette in the middle of the screen, where you can now search for "bulk import sites". Click on the first result.

This should now take you to a page with the title "Import Sites", with 2 cards. One for downloading the Excel template, and another one for uploading. Let's proceed by downloading the Excel template, by clicking on the button with the text "Download template".

This will download a template Excel sheet with 2 sheets:

  • A sheet with some general instructions for importing
  • The actual sheet with the data for the import i.e. "data-to-import"

Fill out the template

Now it's time to fill out the template. Open the "data-to-import" sheet and you'll see the following columns:

Column Required Description
name Yes The name of the site (must be unique, case-insensitive)
level1 No Top-level hierarchy (e.g., "Supply Chain", "Retail")
level2 No Second-level hierarchy (e.g., "Europe", "Americas")
level3 No Third-level hierarchy (e.g., "South", "North")
level4 No Fourth-level hierarchy
level5 No Fifth-level hierarchy
level6 No Sixth-level hierarchy
address_search No Address search query (e.g., "Stockholm, Sweden"). Automatically populates all address fields and coordinates
address_address No Full address string
address_countryCode No ISO country code (e.g., "US", "DK", "SE")
address_country No Country name
address_region No Region/state
address_district No District
address_cityPlace No City
address_postcode No Postal/ZIP code
address_locality No Locality
address_neighborhood No Neighborhood
address_street No Street name
address_streetNumber No Street number
address_markerLatitude No Latitude coordinate. Supports decimal (e.g., 55.676098) or DMS format (e.g., 69°13'14.1"N)
address_markerlongitude No Longitude coordinate. Supports decimal (e.g., 12.568337) or DMS format (e.g., 18°04'34.8"E)
insuranceActive No Set to "true" to include the site in the insurance board (leave empty or "false" to exclude)
c_sites_priority No Example select column - Use the predefined options (e.g., "Critical", "High", "Medium", "Low")
c_sites_sap_code No Example ID column - Unique identifier for external system integration
c_sites_sqm No Example number column - Numeric value (e.g., 15000)
c_sites_last_audit No Example date column - Date in ISO format (YYYY-MM-DD)
c_sites_notes No Example text column - Free-form text value

One row per site. In this example, we will import 3 sites with different hierarchy structures:

Here's what this example creates:

  • Barcelona will be placed under Supply Chain → Europe → South → Iberia
  • Stockholm will be placed under Sweden (a single level)
  • Kyiv will be created at the root level (no hierarchy)

The hierarchy levels (Supply Chain, Europe, South, Iberia, Sweden) will be automatically created as parent sites if they don't already exist.

If you have custom columns in your template, they will appear at then end. For "options" custom columns, Excel data validation will make sure you select the correct type.

How address data works

There are three ways to populate address information for your sites during bulk import. You can pick the approach that fits your data best — and even mix approaches across different rows in the same import.

Option 1: Search by address or place name

Use the address_search column to type what you know about the location — a city name, a full street address, a landmark, or even a postal code — and 21RISK will look it up for you.

For example, entering Stockholm, Sweden will automatically populate the country, region, city, postal code, street, latitude, longitude, and all other address fields.

If you have also filled in some individual address fields in the same row (e.g., address_street or address_postcode ), those values will not be overwritten. The lookup only fills in fields you have left empty — so you always stay in control of your data.

Pros: Quickest to fill in — just type a name or address without needing coordinates or structured fields. Works with city names, street addresses, landmarks, and more.

Cons: Results depend on the search query. An ambiguous or misspelled query may resolve to the wrong location. Always review the what-if preview to verify.

Option 2: Look up address from GPS coordinates

Enter latitude and longitude in the address_markerLatitude and address_markerlongitude columns. 21RISK will then automatically look up the full address — country, city, postal code, street, and more — based on those coordinates.

Coordinates can be entered in either decimal format (e.g., 55.676098 ) or DMS format (e.g., 69°13'14.1"N ) — both are supported and will be automatically converted.

Just like with address search, the lookup will never overwrite fields you have already filled in. It only fills in the gaps. For example, if you provide coordinates for a site in New York and also enter address_street: "My Custom Street" , the street field will keep your value — everything else is resolved automatically.

Pros: Pinpoint precision — you control exactly where the site is placed on the map. Ideal when you have coordinates from a surveying tool, GPS device, or another system.

Cons: Requires you to already have accurate latitude/longitude values. The reverse address lookup may not perfectly match the physical street address in all regions.

Option 3: Enter address fields manually

Fill in any combination of the individual address fields ( address_address , address_countryCode , address_street , etc.) directly in the spreadsheet. No lookup is performed — the values you enter are used exactly as provided.

You can optionally include address_markerLatitude and address_markerlongitude alongside the manual fields to place the site on the map.

Pros: Full control — no automated lookup can change or misinterpret your data. Best when your address data comes from an authoritative source.

Cons: Most manual effort. You need to fill in each field yourself, and there is no validation that the address is real or that the coordinates match the address.

Upload and validate the template

With data in our spreadsheet, we are now ready to validate with our "What-if" scenario. Go back into 21RISK, and upload the spreadsheet and click "Upload template".

This should now take you to a page with the title "Bulk import what-if analysis". This will show all the sites that will be created if you proceed with the import.

The table shows sites sorted by hierarchy depth:

  • Depth 0 : Root-level sites and top-level hierarchy (e.g., "Supply Chain", "Sweden", "Kyiv")
  • Depth 1 : Second-level hierarchy (e.g., "Europe")
  • Depth 2 : Third-level hierarchy (e.g., "South")
  • And so on...

You should now validate that the import looks correct. If you find something that looks out of place, make changes to the Excel template, and re-upload.

If the sites look correct, let's proceed to import by clicking the "Import now" button at the bottom of the page.

This will now take you to the "Sites" table where you can confirm the import worked.

To see the hierarchy structure, switch to the tree view by clicking the tree view button.

Good job - you have now successfully imported sites from Excel using our bulk import flow 🎉

Troubleshooting

If you encounter errors during upload, here are common causes and solutions:

Error Cause Solution
"Cannot provide both address_search and latitude/longitude" A row has both address_search and address_markerLatitude / address_markerlongitude filled in Use either address_search or coordinates per row, not both
"Hierarchy levels must be contiguous" You have a gap in the levels (e.g., level1 and level3 filled, but level2 empty) Fill in all levels from level1 up to your deepest level
"Hierarchy name used at different levels" A hierarchy name like "Europe" is used at level1 in one row and level2 in another Ensure each hierarchy name is always used at the same level
"Site name already exists" A site with that name already exists in your organization Use a unique name or update the existing site manually
"Duplicate site names in file" The same site name appears multiple times in your import file Ensure each site name is unique