# Juniper Service Operations: import guide

Version 1.0 · 23 October 2026 · All data is synthetic.

Use `juniper-service-operations-300-v1.csv` for the main demonstration. It contains 300 unique work orders and 22 columns, encoded as UTF-8 with BOM, quoted fields and CRLF records. The Excel fallback contains the same records in the `JuniperWorkOrders` table on `Work orders`.

Start in the intended demo site. Use the list creation command, select **From CSV**, upload the file, review every proposed column type, and save to that SharePoint site. Name the list **Juniper Service Operations - EP022**. Description: “300 fictional Juniper Field Services work orders for the Tunde Connects HTML reporting demonstration. Reporting cutoff 23 October 2026. No customer data.” If CSV import is unavailable, use **From Excel** and select `JuniperWorkOrders`.

Microsoft documents that an uploaded import file is also saved in the site's **Site Assets** library. Include that original file in your access and cleanup review. See [Microsoft's import guide](https://support.microsoft.com/en-us/sharepoint/lists/data-and-lists/create-a-list-based-on-a-spreadsheet).

| Column | SharePoint type / meaning |
| --- | --- |
| Title | Single line of text; recognizable job title |
| WorkOrderKey | Single line of text; stable key, JFS-2026-0001 through JFS-2026-0300; not SharePoint's built-in ID |
| Region | Choice or text: North, South, East, West, Central, Coastal |
| ServiceType | Choice or text: Network, Cooling, Electrical, Access, Workplace, Plumbing |
| Priority | Choice or text: Low, Normal, High, Critical |
| Status | Choice or text: Completed, In progress, Scheduled, Blocked, Awaiting approval, Cancelled |
| AssignedTeam | Text; fictional team label, not a Person column |
| Client, SiteName | Text; fictional organization/location labels |
| OpenedDate, DueDate, CompletedDate | Date only. Blank completion dates stay blank. Source format YYYY-MM-DD |
| EstimatedCostUSD, ActualCostUSD | Currency USD or Number with explicit USD display; 2 decimal precision is sufficient |
| LaborHours | Number, 1 decimal |
| VisitCount | Number, 0 decimals |
| CustomerRating | Number, 0 decimals, 1–5 where present; blank means no response yet |
| WorkDescription, ProgressNotes | Multiple lines of plain text; values exceed 255 characters |
| Blocker, NextAction | Multiple lines of plain text |
| DataOrigin | Text; every row says Synthetic training data |

If the import wizard proposes single-line text for the long notes, change that mapping before importing. If that mapping is unavailable, stop and use a blank list with correctly typed columns plus an approved import route. Do not accept truncation or silently shorten the dataset. Confirm available mappings in the actual UI.

Post-import checks: count 300 items; verify the first, middle and last WorkOrderKey; compare full descriptions and notes for 0001, 0150, 0299 and 0300; verify a known date is not reversed; check a zero cost stays zero and an empty rating stays empty. Use `expected-results-v1.md` for totals. A successful upload notification alone is not data validation.

Suggested list views: Operations (key, title, region, priority, status, assigned team, due date, blocker, next action); Costs (key, status, estimate, actual cost, hours); All details (all columns). Views improve presentation; they do not implement row/column security.

For the lab use the complete list, with no saved filter unintentionally limiting the report scope. Report inclusion, truncation and pagination must be checked. Preserve the source files and the generated report before trying changes.

Cleanup inventory: episode list, import file in Site Assets, generated HTML, any copied report, supporting assets, test-specific sharing links. Delete only episode-created artifacts after the owner's retention preference is known. Never change existing tenant controls merely to make the demonstration succeed.

## Portable import route from this lab

The lab encountered a calendar-day shift when Excel native dates were imported into the site's Pacific time zone, and Number mapping converted empty ratings to zero. `juniper-service-operations-import-safe-v1.xlsx` preserves dates as ISO YYYY-MM-DD text and populated ratings as text. Map OpenedDate, DueDate, CompletedDate and CustomerRating to **Single line of text**. Keep costs, labor hours and visit counts as Number; keep long notes, Blocker and NextAction as Multiple lines of text. Use the report prompt's explicit date/rating parsing rules.

This route preserves source values but does not give the list native date-column controls or numeric rating filters. For a production schema requiring those native types, validate a typed import in that site's regional settings before using it. The portable file's tenant comparison is recorded separately; do not infer success from its existence.
