Overview
The list of tags may be created either manually in Student Success & Engagement (SS&E) or via the SIS Import/Person Datafeed. Tags can be assigned to a person in three ways: Automated Tags (assigned by SS&E system), Data-Backed Tags (assigned via SIS Import on personTag datafeed), and Manual Tags (assigned by an SS&E Administrator). This guide covers Data-Backed Tags. For more general information on Tags, see the Tagging section of the help center.
Tags in Implementation
In new implementations, two data-backed tags (or sets of tags) will be implemented as an example/template. Your institution can replicate this process after implementation to continue importing additional tags into SS&E. You can choose two of these four tags/tag sets to implement. Alternative tags may be considered on a case by case basis if you have a particular need or goal in mind.
- Athletics
- Clubs
- Dean's List
- Academic Standing
Tag Related Feeds
The SIS Import Definitions outlines the import requirements for each of the following feeds.
-
tag
- This datafeed is optional as tags can be created in SS&E Admin. It is most useful when many tags are stored in the same table/file in the SIS, or when new tags need to be created dynamically over time (e.g. cohorts, clubs). If only a few tags will be used, it’s easier to create them in SS&E.
-
personTag
- This datafeed is optional as tags can be assigned using Automated Tag Filters or manually in SS&E Admin.
ER Diagram
Example Scenario
In this example, Olivia Student (0123456) runs track and cross country and should be tagged as an athlete as well as for each individual sport. Jonathan Student (0654321) was on the basketball team last year but is taking the year off.
tag
- SIS.TAG.ATHLETE, Athlete
- SIS.TAG.WTRACK, Women’s Track
- SIS.TAG.WXC, Women’s Cross Country
- SIS.TAG.MBASKETBALL, Men’s Basketball
personTag
- 0123456*SIS.TAG.ATHLETE, 0123456, active=true, SIS.TAG.ATHLETE
- 0123456*SIS.TAG.WTRACK, 0123456, active=true, SIS.TAG.WTRACK
- 0123456*SIS.TAG.WXC, 0123456, active=true, SIS.TAG.WXC
- 0654321*SIS.TAG.ATHLETE, 0654321, active=false, SIS.TAG.ATHLETE
- 0654321*SIS.TAG.MBASKETBALL, 0654321, active=false, SIS.TAG.MBASKETBALL
Tag Removal
If a personTag record might be removed in the future (most are), the personTag record must be imported as active=false. Because of this, it may be necessary to create a personTag record for each person in the data feed and for each tag, setting active=true for only those who should have the tag.
SQL Views/Queries
Because it is often necessary to create a personTag record for each person so that tags can be removed, it may be helpful to create the personTag feed by selecting from the Person list, and joining the tag data onto the person list. This allows for a case statement to set active=true when the person should have the tag, and active=false for everyone else in the person list who should not have it.
CSV Format Examples
When setting up personTag assignments using CSV files, sometimes it’s possible to create the file exactly matching the personTag SIS Import Definitions, but the CSVs can also be set up in different ways depending on how the data is available in the SIS. The Accelerate configuration can then transform the data into the SIS Import format. Examples can be found below but see the five CSV Format Options in the Data-Backed Tags article for more detail.
Option 1 - person_tag_athletes.csv
Anyone in this file will be tagged with the TAG.ATHLETE tag. Anyone who is not in this file will be marked active=false and the tag will be removed.
- "0123456"
- "0123457"
Option 2 - person_tag_sports.csv
Anyone in this file will be tagged with the corresponding sports team tag. Anyone without a tag association will be marked active=false and the tag will be removed.
- "0123456","ATHLETE"
- "0123457","WXC"
- "0123458","ATHLETE"
- "0123459","WTRACK"
Option 3 - person_tag_sports.csv
Anyone in this file with a true value will be tagged with the corresponding sports team tag. Anyone with a false value will be marked active=false and the tag will be removed.
- "0123456","true","ATHLETE"
- "0123457","true","WXC"
- "0123458","false","ATHLETE"
- "0123459","false","WTRACK"
- "0654321","false","MBASKETBALL"
Option 4 - person_tag_sports.csv
If today is between the start and end dates, the person will be tagged with the corresponding sports team tag. Anyone who is not in this file OR if today is outside the start and end dates will be marked active=false and the tag will be removed.
- "0123456","2023-08-01 00:00:00","","ATHLETE"
- "0123456","2023-08-01 00:00:00","","WTRACK"
- "0123456","2023-08-01 00:00:00","","WXC"
- "0654321","2023-08-01 00:00:00","2024-06-01 00:00:00","ATHLETE"
- "0654321","2023-08-01 00:00:00","2024-06-01 00:00:00","MBASKETBALL"
Option 5
See personTag format above.
Accelerate Configuration
When using the CSV Method, the Accelerate configuration must be updated to accept the person_tag.csv files. Here are examples corresponding to the CSV options above:
Option 1
select
'SIS.TAG.ATHLETE.' || p.COLUMNS[0] as id,
p.COLUMNS[0] as personId,
case
when nullif(pta.COLUMNS[0], '') is not null then 'true'
else 'false'
end as active,
'SIS.TAG.ATHLETE' as tagId
from dfs.root.`person.csv` p
left outer join dfs.root.`person_tag_athletes.csv` pta on p.COLUMNS[0] = pta.COLUMNS[0]
Option 2
select
concat('SIS.TAG.', t.tagId, '.', p.COLUMNS[0]) as id,
p.COLUMNS[0] as personId,
case
when pts.COLUMNS[0] is not null then 'true'
else 'false'
end as active,
concat('SIS.TAG.', t.tagId) as tagId
from dfs.root.`person.csv` p
cross join (select distinct COLUMNS[1] as tagId from dfs.root.`person_tag_sports.csv`) t
left outer join dfs.root.`person_tag_sports.csv` pts on pts.COLUMNS[0] = p.COLUMNS[0] and pts.COLUMNS[1] = t.tagId
Option 3
select
concat('SIS.TAG.', t.tagId, '.', p.COLUMNS[0]) as id,
p.COLUMNS[0] as personId,
case
when pts.COLUMNS[1] = 'true' then 'true'
else 'false'
end as active,
concat('SIS.TAG.', t.tagId) as tagId
from dfs.root.`person.csv` p
cross join (select distinct COLUMNS[2] as tagId from dfs.root.`person_tag_sports.csv`) t
left outer join dfs.root.`person_tag_sports.csv` pts on pts.COLUMNS[0] = p.COLUMNS[0] and pts.COLUMNS[2] = t.tagId
Option 4
select
concat('SIS.TAG.', t.tagId, '.', p.COLUMNS[0]) as id,
p.COLUMNS[0] as personId,
case
when CURRENT_DATE >= cast(pts.COLUMNS[1] as date)
and (CURRENT_DATE <= cast(pts.COLUMNS[2] as date) or nullif(pts.COLUMNS[2],'') is null) then 'true'
else 'false'
end as active,
concat('SIS.TAG.', t.tagId) as tagId
from dfs.root.`person.csv` p
cross join (select distinct COLUMNS[3] as tagId from dfs.root.`person_tag_sports.csv`) t
left outer join dfs.root.`person_tag_sports.csv` pts on pts.COLUMNS[0] = p.COLUMNS[0] and pts.COLUMNS[3] = t.tagId
Option 5
select
COLUMNS[0] as id,
COLUMNS[1] as personId,
COLUMNS[2] as active,
COLUMNS[3] as tagId
from dfs.root.`person_tag.csv`
Adding Tags After Implementation
- When creating new personTags using SQL Views, ensure that the Accelerate Configuration (SS&E Admin > SIS Integration > Accelerate Configuration) includes the new personTag view name (if a new view was created).
- When creating new personTags using the CSV Method, ensure that the Accelerate Configuration (SS&E Admin > SIS Integration > Accelerate Configuration) includes a query to pull the file.
For Technical Services Assistance with either of these, a Medium Technical Project can be requested from the Watermark Academy.
Additional Information
Additional resources related to tags in SS&E can be found here.