🚀 Case Management is in Open Beta
Case Management is now in Open Beta and available to all customers on the Student Success package. It's actively evolving, so some capabilities are still on the way. To provide feedback and share with others, visit our User Community Group.
Overview
Alerts and Cases can be imported and exported in bulk using Element451's Import + Export module. Use imports to migrate historical alert and case data from a legacy early-alert system or load records from an external system of record, and use exports to send alert and case data to data warehouses, reporting tools, or other campus systems.
Alert and case fields work inside the same import and export tasks you already use for contact data. There is no separate task type: you map alert and case fields alongside contact fields in a single task.
How Import + Export Works for Case Management
Each row in an import file can create or update an alert, a case, or both, attached to a contact. Element451 first matches the row to a contact using your import's Matching Settings (Element ID, email address, or external ID), then creates or updates the alert and case on that contact's record.
External IDs and Re-Imports
External IDs and Re-Imports
Map an External ID whenever your data comes from another system. The external ID acts as the unique key for each alert or case, so re-importing the same file (or running a scheduled import) updates the existing record instead of creating a copy. Rows with no changes are reported as unchanged.
🚨 Important: Without an external ID, every import run creates new alerts and cases. If you plan to import from the same source more than once, include an external ID column from the start.
Multiple Alerts or Cases for One Contact
Multiple Alerts or Cases for One Contact
A row can carry one alert and one case together. A contact with several alerts needs one row per alert, repeating the contact's matching column on every row. This mirrors how exports work, where Repeat Fields Based On emits one row per alert or case, so a file you export has the same row shape as an import file, though a few column names differ. See Exporting Alerts and Cases below.
If several rows belong to the same case, map the same Case External ID on each row. The case is created once and reported as unchanged on the remaining rows, rather than duplicated.
Alert External ID | Case External ID | |
ALERT-1001 | CASE-4471 | |
ALERT-1002 | CASE-4471 | |
ALERT-1003 | CASE-4471 |
That file produces three alerts and one case.
Case Statuses and Status Categories
Case Statuses and Status Categories
Every Case status you create in Case Settings > Statuses belongs to one of four system status categories: To Do, In Progress, Resolved, or Cancelled. The category is the bucket; your status is the specific label inside it. A school might have three statuses in the Resolved category, for example Resolved - Re-engaged, Resolved - Withdrew, and Resolved - Referred Out.
Import gives you a column for each level. Which one you map depends on how precise your source data is:
Column | Use it when | What to put in the cell |
Custom Status | You know exactly which status each record belongs on | The status name, for example Resolved - Re-engaged |
System Status Category | Your source data only distinguishes open from closed | A category: |
Neither one requires you to look anything up. If you map both, Custom Status wins.
🚨 Important: If you map System Status Category, Element451 files the record under the status flagged default in that category. If no default is set, it uses the first enabled status in the category. On an instance with three Resolved statuses and no default, that choice is arbitrary, so map Custom Status whenever you care which one.
📙 Note: Alert statuses are not customizable. There is exactly one alert status per category, so for alerts the two columns always reach the same status. Mapping System Status Category is the simpler choice.
Translating Values with System Mapping
Translating Values with System Mapping
Type, priority, and status values are translated between your file's values and Element451's using System Mapping column settings, on both import and export. This defaults to matching on name, so a school can map its historical data straight onto its own custom case statuses and priorities without looking up internal IDs.
System Mapping's Interpret as setting defaults to Name, so your file can carry the value's name as it appears in your settings.
Switch it to Guid if your file carries Element451 GUIDs instead, which also keeps a scheduled import working if someone later renames the value.
Importing Alerts and Cases
🚨 Important: Check your automations before running a large import. Imported alerts and cases are created like any other record, so they trigger the same automation rules and workflows a manually created alert or case would. A single historical import can escalate alerts, auto-create cases from templates, assign owners, spawn tasks, and send notifications, all at once and all at the moment you run it.
To import alerts or cases:
Create a new import task and choose your source (computer upload, SFTP, Dropbox, or Google Drive). See Creating Imports for the full walkthrough.
In the mapping step, map your file's columns to fields from the Alerts and Cases field groups, alongside any contact fields you need for matching.
Apply System Mapping column settings to type, priority, and status columns as needed.
Confirm your Matching Settings.
Review your active automations. See below.
Run a Test Import, review the results, then run the import.
Reviewing Active Automations
Reviewing Active Automations
Two things in Element451 can fire when an alert or case is created, and both apply to imported records:
Alert and case automation rules, including actions that create a case from an alert or apply a Case Template.
Workflows that use alert or case creation as their trigger.
Whether that is helpful depends entirely on what you're importing:
What you're importing | Should automations run? |
A live or scheduled feed of new alerts from an external system | Usually yes. You want incoming alerts routed, assigned, and escalated exactly as if staff had created them. |
Historical or already-closed records from a legacy system | Usually no. Years of past alerts can generate a flood of new cases, tasks, assignments, and notifications about students whose issues were resolved long ago. |
✨ Pro Tip: Import a handful of rows first and look at what happened afterward, not just at Run History. Check whether new cases, tasks, or assignments appeared that you didn't map in your file. That tells you which automations are in play before you run the full file.
Matching Settings
Matching Settings
Because alerts and cases attach to a contact that already exists, your Matching Settings have to identify that contact. Two configurations cause every row to fail, and both are easy to hit:
Configuration | What happens |
Update Preference is Update Existing but no match field is selected | Nothing can be matched, so every row is treated as a new contact and rejected with "Email has already been taken." |
Update Preference is Import New and Update Existing but no match field is selected | Same result. The match field, not the update preference, is what finds the contact. |
Always select a match field, normally Email, Element ID, or an external ID. If your file contains contacts that don't exist yet, use Import New and Update Existing so they are created rather than rejected.
✨ Pro Tip: If every row fails with "Email has already been taken," your match field is missing. The import is trying to create contacts that already exist instead of matching them.
Alert Import Fields
Alert Import Fields
Field | Field ID | Description | Required |
Type |
| The alert type. Must match an existing alert type in your instance; use System Mapping to translate external values. | Yes |
Name |
| The alert's name. | Yes |
Custom Status |
| A specific alert status, given by name. Alert statuses are not customizable and there is exactly one per category, so mapping System Status Category instead reaches the same status. Takes precedence over System Status Category when both are mapped. | No |
System Status Category |
| The system state the alert sits in. One of | No |
Priority |
| The alert priority, given by name as it appears in your priority settings. When this column is not mapped, the instance default priority is used. | No |
Assignee |
| The reviewer responsible for triaging the alert. Accepts comma-separated user or team ObjectIds; names and email addresses are not accepted. Find a user's ObjectId in Settings > Manage Users by opening the user and copying the ID from the URL. Do not put a space after the comma, and wrap a multi-value cell in double quotes: | No |
Description |
| The alert description. | No |
Due Date |
| When the alert is due. | No |
Notes |
| A note added to the alert. Each import run appends a note rather than replacing the existing one, so re-importing the same file adds a duplicate note. Import only; notes are not available on export. | No |
Course Enrollments |
| Links the alert to one or more course enrollments. Accepts comma-separated course enrollment GUIDs. | No |
Associated Case |
| Relates the alert to an existing case. This column takes the case's GUID, for example | No |
Created Date |
| The alert's original creation date. Defaults to the import run time; map this when migrating historical data. The export equivalent uses a different field ID, | No |
External ID |
| The alert's unique ID in your external system. Enables updates on re-import. | No |
📙 Note: An alert in the escalated_to_case category does not need a related case. You can import an alert as escalated without mapping Associated Case.
Associated Case (alerts-case)
When using the Associated Case field, it's important to know that it only takes the internal case GUID, which only exists after Element451 has created the case. You cannot relate an alert to a case created in the same import run.
Finding a case GUID:
For a bulk migration, import your cases first, then export them and read the GUIDs out of the export.
For one or two cases, open the case, use the copy link icon, and paste the link somewhere: it looks like
https://yourschool.element451.io/v2/case-management?caseGuid=yourschool.cases.900, and the value aftercaseGuid=is the GUID. Then import your alerts with those GUIDs mapped. To reproduce an alert's escalated state fully, map both Associated Case and System Status Category (escalated_to_case).
Case Import Fields
Case Import Fields
Field | Field ID | Description | Required |
Type |
| The case type. Must match an existing case type in your instance; use System Mapping to translate external values. | Yes, when creating new cases |
Name |
| The case name. | No |
Custom Status |
| A specific status from your case status workflow, given by name, for example Resolved - Re-engaged. Use this when migrated cases need to land on a particular status. Takes precedence over System Status Category when both are mapped. | No |
System Status Category |
| The category a status belongs to: | No |
Priority |
| The case priority, given by name as it appears in your priority settings. When this column is not mapped, the instance default priority is used. | No |
Assignee |
| The case owner. Accepts comma-separated user or team ObjectIds; names and email addresses are not accepted. A row can assign users or a team, but not both. Find a user's ObjectId in Settings > Manage Users by opening the user and copying the ID from the URL. Do not put a space after the comma, and wrap a multi-value cell in double quotes: | No |
Description |
| The case description. | No |
Due Date |
| When the case is due. | No |
Private |
| Marks the case as private. Accepts | No |
Created Date |
| The case's original creation date. Defaults to the import run time; map this when migrating historical data. The export equivalent uses a different field ID, | No |
External ID |
| The case's unique ID in your external system. Enables updates on re-import, and lets multiple rows attach to the same case. | No |
CSV Example Templates
CSV Example Templates
Testing and Tracking Results
Use Test Import to run a dry run before committing: it validates every row and reports how many alerts and cases would succeed or fail, without writing anything.
Reading Run History
Reading Run History
Run History looks different for alert and case imports than for any other import you run, and the reason is worth understanding.
Alerts and cases are the only data you can import that is not written directly to the contact profile. Everything else an import touches, bio-demographic fields, test scores, applications, lives on the contact record itself. Alerts and cases are separate records that reference a contact. Run History reflects that split.
Each run reports on three levels:
Row | What it counts |
The first row, with the run's date and time | The contact records. |
Alerts | The alert records created, updated, skipped, failed, or unchanged. |
Cases | The case records created, updated, skipped, failed, or unchanged. |
🚨 Important: Expect the contact row to report Unchanged for every row in your file. That is the expected behavior. You are attaching alerts and cases to contacts, not editing the contacts themselves, so no contact data changed. A run showing "0 added, 0 updated, 25 unchanged" on the contact row and "25 added" on the alerts row imported 25 alerts successfully.
Read the alert and case rows to judge whether the import worked. The contact row only tells you how many contacts were matched.
✨ Pro Tip: Always run a Test Import when setting up a new mapping. Row-level error reasons let you fix your file or mapping before any records are created.
Exporting Alerts and Cases
Repeat fields give you one row per alert or case, with the contact's fields repeated on each row. Set Repeat Fields Based On to Alerts or Cases, then map from the field tables below.
To export alerts or cases:
Create a new export task. See Creating Exports for the full walkthrough.
Set Repeat Fields Based On to Alerts or Cases. Each alert or case exports as its own row, repeating the contact fields you include.
Map the alert or case fields you need. Most import fields are available on export, plus the record GUID and created and updated timestamps. See the field tables below.
Use Items To Export, Order By, and Conditions to control which records are included.
Choose a destination (email, SFTP, Dropbox, or Google Drive) and run the export, or put it on a recurring schedule with Scheduling Import + Export.
Alert Export Fields
Alert Export Fields
Field | Field ID | Notes |
GUID |
| The alert's Element451 GUID. Export only. |
External ID |
| The alert's ID in your external system. |
Name |
|
|
Type |
|
|
Custom Status |
|
|
System Status Category |
|
|
Priority |
|
|
Assignee |
| Exports as comma-separated user or team ObjectIds. |
Description |
|
|
Due Date |
|
|
Course Enrollments |
| Exports as comma-separated course enrollment GUIDs. |
Associated Case |
| The linked case's GUID. Useful for collecting case GUIDs to use on a later import. |
Created At |
| Export only. Note the different field ID from the import column, |
Updated At |
| Export only. |
Case Export Fields
Case Export Fields
Field | Field ID | Notes |
GUID |
| The case's Element451 GUID. Export only. This is the value the Associated Case import column expects. |
External ID |
| The case's ID in your external system. |
Name |
|
|
Type |
|
|
Custom Status |
|
|
System Status Category |
|
|
Priority |
|
|
Assignee |
| Exports as comma-separated user or team ObjectIds. |
Description |
|
|
Due Date |
|
|
Private |
|
|
Created At |
| Export only. Note the different field ID from the import column, |
Updated At |
| Export only. |
Calculated Alert/Case Traits
Calculated Alert/Case Traits
Calculated traits for Case Management live on the contact record itself, so they come back on a normal contact export with one row per student and no repetition. Use these when you want counts rather than detail, for example a retention report that needs each student's open case count alongside their persistence data.
Field | Field ID |
Total Alerts |
|
Total Open Alerts |
|
Total Closed Alerts |
|
Total Escalated Alerts |
|
Total Cases |
|
Total Open Cases |
|
Total Resolved Cases |
|
Total Canceled Cases |
|
🚨 Important: An export is not a ready-to-import file. Three differences to expect: created dates use different field IDs (alerts-created-at and cases-created-at on export, alerts-created-date and cases-created-date on import), so rename or remap that column; GUID and Updated At are export only and have no import counterpart; and Notes are import only, so notes do not round-trip.
✨ Pro Tip: Exporting alerts with Associated Case mapped, or exporting cases with GUID mapped, is the fastest way to collect case GUIDs in bulk. That is exactly what the Associated Case column needs on a later import.



