Overview
The bulk import feature enables Admin users to create multiple reservations at once by uploading a CSV file. The application guides the user through validation, conflict detection, and resolution options, then displays a summary of the import results.
This feature is useful when:
- Setting up reservations for class schedules during a semester or academic year
- Migrating reservations from another system
- Creating recurring event blocks across multiple spaces
- Batch-processing reservation requests
Prerequisites
- User Role: Facilities Manager or Platform Admin user account
- Access: Must have permission to create reservations in the target spaces
- CSV File: Prepared with required columns and valid data (see CSV File Requirements)
The Bulk Import Wizard
Step 1: Upload CSV
- From the Room Reservations home page, select Bulk Import.
- On the landing page, select the Bulk Import button (top right).
- In the upload dialog, either:
- Drag and drop a CSV file into the zone, or
- Click the zone to open the file picker and select a CSV file
- (Optional) Download the CSV Template link to use as a starting point for formatting.
- Select Next to proceed to validation.
File Requirements:
- Type: CSV (comma-separated values)
- Max Size: 10 MB
- Encoding: UTF-8 recommended
Step 2: Validate
The system checks the uploaded file for:
- Structure: Presence and order of required columns
- Data Validity: Buildings and spaces exist in the platform, requester emails match existing users, date/time formats are correct, recurring event fields are complete
- Conflicts: Time overlaps with existing approved reservations in the target spaces
Outcomes:
- No conflicts found → Proceeds directly to Step 4 (Import Complete) with all rows imported.
- Conflicts detected → Proceeds to Step 3 (Resolve Conflicts) to choose a resolution strategy.
- Validation errors → Returns to Step 1 with error messages highlighting the issues.
Step 3: Resolve Conflicts
If the validation step detects time overlaps, you must choose how to handle conflicting rows. Two options are available:
| Option | Behavior | Impact on Existing Reservations |
|---|---|---|
| Do Not Import Conflicting Reservations | Skips rows that conflict with existing approved reservations. Only non-conflicting rows are imported. | Existing reservations remain unchanged and approved. |
| Override Existing Reservations | Forces import of all rows, including those that conflict. Conflicting existing reservations are moved to Rejected status. | Existing reservations are displaced. |
To choose an option:
- Review the conflict summary to understand which reservations would be affected.
- Select the desired option.
- If selecting “Override Existing Reservations,” a confirmation modal appears. Select Confirm to proceed; select Cancel to return to the conflict resolution screen.
- Select Import to complete the bulk import.
Step 4: Import Complete
A summary page displays the results:
- Processed: Total number of rows in the CSV file
- Reservations Created: Count of successfully imported rows
- Skipped or Rejected: Count of rows not imported (depending on the conflict resolution option chosen in Step 3)
From this page, you can:
- Return to the landing page to view the import in the Import History table
- Start a new bulk import
CSV File Requirements
The CSV file must contain the following columns. Download the CSV template from the upload page to ensure the correct format.
Required Columns
| Column | Format | Notes |
|---|---|---|
| Event Name | Text, max 255 characters | The import rejects any row where the event name is empty or exceeds 255 characters |
| Recurring? | “Yes” or “No” | Determines whether this is a one-time or recurring reservation |
| Reservation Start Date | MM/DD/YYYY | USA date format. The import rejects any row with an invalid date format |
| Reservation Start Time | HH:MM (24-hour) | The import rejects any row with an invalid time format |
| Reservation End Time | HH:MM (24-hour) | The import rejects any row with an invalid time format |
| Requester Email | Valid email address | Must match an existing user in the platform. The import rejects the row if the user does not exist |
| Building | Exact building name | Must match a building name exactly as it appears in the platform |
| Space | Exact space name | Must match a space name within the specified building |
| Purpose | “Event” or “Academic” | Categorizes the type of reservation |
Conditionally Required Columns
These columns are required only when “Recurring?” is set to “Yes”:
| Column | Format | Notes |
|---|---|---|
| Reservation End Date | MM/DD/YYYY | The end date for the recurring series. The import rejects the row if “Recurring?” is “Yes” and this field is empty |
| Recurring Days | Day abbreviations: M, T, W, R, F, S, U | M = Monday, T = Tuesday, W = Wednesday, R = Thursday, F = Friday, S = Saturday, U = Sunday. List multiple days together (e.g., “MWF” for Monday, Wednesday, Friday). The import rejects the row if “Recurring?” is “Yes” and this field is empty or contains invalid day codes |
Optional Columns
| Column | Format | Notes |
|---|---|---|
| Event Start Time | HH:MM (24-hour) | Must be after the Reservation Start Time. If left empty, defaults to the Reservation Start Time. Useful when setup time is needed before the event begins |
| Event End Time | HH:MM (24-hour) | Must be before the Reservation End Time. If left empty, defaults to the Reservation End Time. Useful when cleanup time is needed after the event ends |
| Description | Free text | Additional details about the event or reservation |
| Additional Notes | Free text | Any additional information or special instructions |
General File Requirements
- File encoding should be UTF-8
- No blank rows
- Event names should not contain line breaks or special characters that break CSV formatting
Understanding Import History
The Import History table tracks all bulk imports. Each row displays:
| Column | Definition |
|---|---|
| Date & Time | When the bulk import was initiated |
| Initiated By | Name of the user who started the import |
| File Name | Original name of the uploaded CSV file |
| Status | Current state: Validation Failed, Processing, Completed, or Cancelled |
| Actions | Options to view details/errors |
Troubleshooting
| Issue | Cause | Resolution |
|---|---|---|
| “File type not supported” | Uploaded file is not a CSV | Save the file as CSV (not Excel, JSON, or other format) and re-upload |
| “File size exceeds 10 MB” | CSV file is too large | Split the file into smaller batches and import separately |
| “Missing required column” | CSV is missing one or more required columns | Download the CSV template from the upload page, ensure all required columns are present, and re-upload |
| “Invalid date format” | Date does not match MM/DD/YYYY or time does not match HH:MM (24-hour) | Check the CSV file for typos or incorrect formatting (e.g., “2026-04-15” instead of “04/15/2026”); correct and re-upload |
| “Building/Space does not exist” | Building or Space name in the CSV does not match any entry in the platform | Verify the Building and Space names match exactly as they appear in the platform (case-sensitive); update the CSV and re-upload |
| “User does not exist” | Requester Email does not match any user in the platform | Verify the email address belongs to an active user in the system; update the CSV and re-upload |
| “All rows conflicted” | Every row in the CSV overlaps with an existing approved reservation | Review the conflict resolution options in Step 3, or adjust the reservation times in the CSV and re-upload |
Related Articles
- Space and Reservation Analytics Reports
- Configuring Space Type Booking Policies