Skip to main content

How to bulk create installs for large buildings

These instructions detail how to provision many Install requests at once. Usually this is done at large buildings where the mesh serves many apartments. Often we install the equipment all at once during a renovation or construction without an explicit request from the resident of the apartment. In this scenario we need to create install numbers in our systems without asking each resident to submit the join form.

Create/Locate the Supporting Objects

Since MeshDB uses a relational model to store data, multiple objects need to be created to represent the equivalent of a single row in the "New Node Form" spreadsheet. Before we can create Install objects, we must first create Member and Building objects, and assign a network number. For more information about the various tables included in MeshDB, see MeshDB Schema Design.

The easiest way to do this is to submit the join form once on behalf of the building (if not already done previously). Once created, open this first install object in the MeshDB admin UI:

Screenshot 2024-09-07 at 22.22.45.png

Use the eye icon next to the building and member entries to open the linked objects. On each object, note the object ID from the URL. For example, in the screenshots below, the meshdb member ID is 5b9c3cde-bbec-4b1a-8267-f1783c78b8c3, and the meshdb building ID is 4e9da8b9-f068-499f-9672-49e03a2c9834

Screenshot 2024-09-07 at 22.24.49.pngScreenshot 2024-09-07 at 22.24.35.png

At this point, you should also create a Node for this location using the NN assignment tool or vanity NN process. Use the "first" install number we created above to assign the NN. Then use the network number to locate the node object, and copy the node ID from the URL similar to the building and member IDs:

Screenshot 2024-09-07 at 22.31.14.png

Build the import CSV

In order to create the install requests in bulk, we need to place the necessary information in a tabular format. Several formats are supported, but for these instructions we will use CSV as it is the simplest to work with using standard spreadsheet applications such as Excel or Google Sheets. To start, open the following CSV template in your favorite spreadsheet application (you will need to paste this into a text editor and save it as a .csv file):

Edit the following columns based on the information collected above:

  • node - set all rows to the node ID we identified above
  • status - likely Pending for all rows, though if some equipment has already been installed, Active or Inactive may be more appropriate. See MeshDB Status Values for more information about each value and when it is most appropriate
  • request_date - set all rows to the current date in the format MM/DD/YYYY
  • install_date - leave blank or set to the date of the equipment installation as appropriate
  • abandon_date - leave blank
  • building - set all rows the MeshDB numerical ID of the building as identified above
  • unit - enter the unit number for each install request as provided/defined by the building owner
  • roof_access - enter 1 (true) or 0 (false) to indicate if access to the roof is available at this site
  • member - set all rows the MeshDB numerical ID of the member object created for the "original install" as identified above
    • This is not the only option, it is possible to create different member objects for each install row if contact information is available, see the section titled "Bulk Add Members" below for more info
  • referral - optional, a but good place to indicate this install was created for a large building
  • notes - optional, but a good place to indicate the name of the building/node that these installs belong to
  • diy - enter 0 (false) for all rows to indicate that these installs are conducted by volunteers, not DIYers
node,status,request_date,install_date,abandon_date,building,unit,roof_access,member,referral,notes,diy
,Pending,07/19/2024,,,,2A,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,2B,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,2C,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,3A,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,3B,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,3C,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,4A,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,4B,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,4C,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,5A,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,5B,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,5C,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,6A,1,,Large Buidling Install,Building Name,0
,Pending,07/19/2024,,,,6B,1,,Large Buidling Install,Building Name,0

The following columns can be optionally added to the csv, but should not be unless there is a good reason, and you know what you're doing:

  • id - under normal circumstances this should not be specified manually, since these are automatically assigned by meshdb when the installs are imported
  • install_number - under normal circumstances this should not be specified manually, since these are automatically assigned by meshdb when the installs are imported
  • ticket_id - meshdb will automatically create OSTicket entries for each install request as needed. Do not manually create these

Import your CSV into MeshDB

Navigate to the install list page in the MeshDB admin UI and select the "Import" option:

Screenshot 2024-07-19 at 22.34.24.png

Select your CSV file, and select CSV as the format in the dropdown:

Screenshot 2024-07-19 at 22.36.01.png

Review the information available on the confirmation screen for correctness, note the generated install numbers if desired and select "confirm import" to create the new installs in the database:

Screenshot 2024-09-07 at 22.40.39.png

Check to make sure the correct number of installs was created, and observe the newly created install rows in the "all installs" view:

Screenshot 2024-07-19 at 22.39.22.png

Bulk Add Members

The instructions above assume that contact information is not available for the members that will reside in the created install objects. However, if this information is available, and you'd like to create install objects with the correct contact information associated with each, first create a CSV for the member objects using the following template (you will need to paste this into a text editor and save it as a .csv file):

name,primary_email_address,stripe_email_address,additional_email_addresses,phone_number,additional_phone_numbers,slack_handle,notes
Tami Gibson,tamigibson@gmail.com,,,+1 555 555 5555,,,
Jean Williams,jeanwilliams@gmail.com,,,+1 555 555 5555,,,
Shari Martinez,sharimartinez@gmail.com,,,+1 555 555 5555,,,
Melinda Martin,melindamartin@gmail.com,,,+1 555 555 5555,,,

 Edit the following columns based on the information available for each member:

  • name - the member's first and last name
  • primary_email_address - the member's email address
  • stripe_email_address - likely this leave blank (used to indicate if the member has signed up in stripe with a different email)
  • additional_email_addresses - likely leave blank (used to indicate if the member has other emails than their stripe and primary addresses). If provided, must be a comma separated list of email addresses
  • phone_number - the member's phone number, in the format +1 555 555 5555
  • additional_phone_numbers - likely leave blank (used to list additional phone numbers for the member). If provided, must be a comma separated list of phone numbers in the above format
  • slack_handle - likely leave blank, but can be set to the member's slack handle if available
  • notes - optionally provide any notes about this member

The following columns can be optionally added to the csv, but should not be unless there is a good reason, and you know what you're doing:

  • id - under normal circumstances this should not be specified manually, since these are automatically assigned by meshdb when the members are imported

Import this CSV on the members screen, following the same instructions provided above for installs. Just take note of the member IDs provided on the import confirmation screen, and use these IDs in the member column in the installs CSV