...
Define any integrations or data that must be provided to deliver the solution.
- Career Design Lab Integration
- Create a person-scoped field for Years of Professional Experience
- Create the following three material types;
- Resume
- Cover Letter
- Relevant Career Materials
Create user-scoped fields for: - Biography
- CDL Coach Start Date - Allows us to set up a permanent or temporary coach who hasn't started yet. If a coach has a value for that field, their scheduling button will be disabled and a message will say that s/he is not available until on or after that date.
- CDL Last Initials Covered - A list of programs followed by the last initials that they cover in the format: Program1Name: StartingInitial-EndingInital, Program2Name: StartingInitial-EndingInital. (For example: Applied Analytics: A-J, Strategic Communication: Q-Z) CDL Programs Covered (displayed) - Lists the umbrella programs that the advisor covers. For example, if the coach covers multiple Strategic Communications programs, only Strategic Communications should be listed here.HBCU/CUNY Fellows
- Create a prompt key called "Fellowships" with a prompt called "HBCU" and a prompt called "CUNY."
- Create a select multiple field called "Fellowships" that utilizes the fellowships prompt.
- Create a source format called Fellowships, with the following settings:
- Type: Cumulative/Replaceable
- Update Only: Update Only
- Programs of Study Prompts
- For each program of study, set the category to MS (Masters of Science), MPS (Masters of Professional Studies), or NDG (non-degree).
- Change the prompt key so that the export value is labeled as "Program Code."
- Registration Monitoring
- Create a new entity called Registration Monitoring, consisting of the following fields:
- Term - select with the school year terms prompt list.
- Status - select with the following prompts:
- Intends to Register - Near Future (No Holds)
- Intends to Register - Resolving Hold
- Intends to Register - Waitlisted
- Intends to Register - Waiting on Cross-Reg
- May Not Register - Considering Decline/Deferral
- May Not Register - Resolving Hold
- May Not Register - Other (Please List)
- Non-Responsive to Outreach
- Will Not Register - Deferral/Decline
- Will Not Register - Hold
- Will Not Register - Other (Please List)
- Other (Please List)
- NOW REGISTERED!
- Graduate - October
- Graduate - February
- Graduate - May
- Notes - textbox
- Create a new prompt for the advising reason key called "Registration Status."
- Create a new entity called Registration Monitoring, consisting of the following fields:
Technical Design
Purpose
Define in detail the technical work that will need to be completed to deliver the final solution.
- Career Design Lab Integration
- Portals:
- CDL Scheduling - A landing page that does not require permissions to access. A button on the page will take students to the SSO required Portal Book CDL Coach Meeting
- View Page:
- slate_advising/portals/cdl_scheduling/portal_view_files/home_page.html
- View Page:
- Book CDL Coach Meeting - the actual portal connected to coaches' Active Scheduler widgets
- Methods
- Coach - [Coach Name]: Each coach has a method with the following details:
- Type: GET
- Action: show_schedules_[coach_uni].
- View: Coach - [Coach Name]
- Output Type: AJAX Popup/No Branding
- default
- Details:
- Type: GET
- Action: (blank)
- View: Home Screen
- Output Type: DefaultNo Branding
- Queries:
- student_information
- pending_in_person_appointments
- pending_virtual_appointments
- program_coaches
- temporary_coaches
- Details:
- Show Coach
- Details:
- Type: GET
- Action: show_coach
- View: Coach Page
- Output type: Default Branding
- Queries:
- coach_information
- pending_in_person_appointments
- pending_virtual_appointments
- student_information
- Details:
- Coach - [Coach Name]: Each coach has a method with the following details:
- Queries
- coach_information - uses the coach's UNI as a parameter. Gets the coach's name, birography, email address, programs covered, and last initials (if relevant)
- pending in-person appointments - using the logged-in student/alum's identity, gathers any future in-person appointments with a status of "registered."
- pending_virtual_appointments - using the logged-in student/alum's identity, gathers any future virtual appointments with a status of "registered."
- program_coaches - gathers any permanent coaches who are active and cover the student's program of study or one of the student's graduated programs.
- student_information - using the logged-in student/alum's identity, gathers his/her first name, last name, program of study, and graduated programs. Also performs a query to see if the student is currently enrolled in or has graduated from a valid program.
- Views
- Home Page - The portal landing page. Shows the available coaches and temporary coaches.
- Files:
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/home_page/01_page_header.html
- Has a welcome message for the student, lists his/her current program and graduated program(s).
- Coach List
- Uses liquid template to only display if the student is in or has graduated from a valid program.
- Combines the student's current program and graduated programs into a single array.
- Iterates over the list of permanent coaches:
- Checks to see if the coach is responsible for that student's program.
- If so, then checks to see if the coach only covers students whose last names start with specific letters of the alphabet for that program.
- If the coach covers that program AND either does not cover specific letters or covers the first letter of the student's last name, display that coach's card.
- Repeat this process for temporary coaches EXCEPT that their list of programs covered might be blank, in which case, they cover all programs. AND they never are responsible for students based on last initial.
- Each coach has a button to take the student/alum to that coach's page. BUT that button is disabled if the student already has pending appointments.
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/home_page/01_page_header.html
- Files:
- Coach Page - The page that appears when the student/alum selects a coach:
- Files:
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/coach_page/01_coach_information.html. Consists of:
- If this is a valid coach:
- The coach's headshot
- The coach's bio.
- A list of programs supported by the coach.
- If this is not a valid coach:
- An error message with a link to the CDL Scheduling portal.
- If this is a valid coach:
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/coach_page/02_student_ineligible_error.html
- If the student has pending appointments, displays an error that s/he cannot schedule any additional appointments.
- If the student does not have a valid program, displays an error that the student's program is not valid
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/coach_page/03_available_schedules_div.html
- Using liquid template, only displays if a) the student has a valid program and b) does not have any upcoming appointments.
- Has a div with class 'hidden' where the coach's schedules will appear if they have any.
- Has a hidden div with the class danger (to make it red) and hidden. It displays the message that the student/alum may need to reload the page if available sessions don't appear.
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/coach_page/04_coach_schedule_api_call.html
- If this is a valid coach, contains:
- A div that says "Schedule loading. Please wait..." which will be replaced if the coach has schedules
- Lazy Fetch request for the "show_schedules_[coach_uni]" method. This includes the page with the respective coach's widgets. Those widgets make an API call to obtain the HTML code for the widgets and replaces the content of the specified div (in this case, the div above) with the coach's widget(s).
- If this is a valid coach, contains:
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/coach_page/05_javascript_controls.html. If the student/alum does not have any pending appointments, holds the following functions:
- moveDivs
- Each coach widget has a class which is the coach's UNI. If the blank div exists, we know that the coach 's scheduling page has been loaded.
- If the coach's scheduling page has been loaded :
- Hide the page loading div.
- Look for widgets.
- Gather the ids of the widgets into an array.
- iterate over the array.
- For every element with an even index (0, 2, etc.) start a new row.
- Place a div in the current row. Add the coach schedule into that div.
- Unhide the page reload message.
- If the scheduling page has not been loaded:
- Call the function again until it has been called 700 times.
- Then display an error that "there was a problem processing your request."
- If the coach's scheduling page has been loaded :
- Each coach widget has a class which is the coach's UNI. If the blank div exists, we know that the coach 's scheduling page has been loaded.
- moveDivs
- slate_advising/portals/book_cdl_coach_meting/portal_view_files/coach_page/01_coach_information.html. Consists of:
- Files:
- Coach - [Coach Name]: Consists of the coach's Active Scheduler widget(s) and a Blank Div.
- Home Page - The portal landing page. Shows the available coaches and temporary coaches.
- Widgets
- Each coach/temporary coach has a CSS class name of hidden and their UNI. Hidden makes it not appear upon page load and the UNI is used to identify it to move it to the right location and to appear.
- For virtual widgets, the URL of their personal zoom room should go into the location URL.
- Scheduler Templates
- CDL In Person Coach Meeting
- CDL Virtual Coach Meeting
- Scheduler Template Forms
- Each form has a hidden field called "enrollment status."
- Each form has two fields called "Are you a current student?" One defaults to "Yes." The other defaults to "No." Both are read-only. The "Yes" version has a filter to only display when the student's enrollment is "Enrolled," and the "No" version only displays when the student's enrollment is not "Enrolled." Both are read-only.
- Each form as a select field called "Program of Study" that is connected to the Program of Study system field. It also has a textbox called Program of study that does not link to a system field and has a default value of N/A. The select version appears if the student's status is "enrolled." The textbox appears if the student's status is not "enrolled". This is helpful because alumni often still have the field they graduated from as their program of study. All of these fields are read-only.
- Similarly, each form as a "Graduated Programs" select multiple field that is connected to the Graduated Programs system field and a textbox that is not connected to a system field and has a default value of "N/A." If the student has graduated programs, the student has an alumnus status of "Yes," the select multiple field appears. If the student has an alumnus status of "No," the textbox appears. All of these fields are read-only.
- Each form has a "Years of professional experience" select field. This is connected to the newly created system field, but it is not read-only because its value does not come from SIS.
- Scheduler Template Communications (equivalent communications are available for both types of meeting).
- Career Coaching Appointment Scheduled - upon registration - displays to screen and is emailed to the student/alum as well as the coach.
- Career Coaching Appointment Cancellation - upon cancelling - email sent to the student/alum as well as the coach.
- Career Coaching Appointment Reminder - sends a reminder to the student/alum 24 hours before the appointment time.
- Career Coaching Appointment Follow-Up - 8 hours after an appointment, sends an email to the student/alum asking them to follow a link to a survey.
- Career Coaching Appointment No-Show - 8 hours after an appointment, sends an email to the student/alum if they were entered as a no-show.
- Career Coaching Appointment Updated - if any element of a meeting is updated (usually just form fields) displays a screen of the meeting details and an email is sent to the student/alum as well as to the coach.
- Deliver Communications
- An email is regularly sent to coaches if they have not recorded a student's attendance at least one hour after their meeting has concluded.
- Methods
Move aliases from Front to Slate - CDL Scheduling - A landing page that does not require permissions to access. A button on the page will take students to the SSO required Portal Book CDL Coach Meeting
- Created an Inbox Group called CDL.
- Created a Role called Inbox-CDL. Gave the inbox forwarding address to CUIT to forward all emails from the CDL alias to the new forwarding email addressHBCU/CUNY Fellows
- Upload a spreadsheet consisting of a column for PID and a column for Fellowship. PID should match to CUID and Fellowship should match to Fellowships. Each student should have a row for each fellowship (in the unlikely case that one student has both fellowships, s/he should have one row for each on the spreadsheet).
- Add a field on the dashboard pages of students, former students, and alumni that shows "Fellowships" and lists any fellowships that the student has.
- Create a population for HBCU Fellows and one for CUNY Fellows.
- Create a rule called "Assign HBCU Fellows" and one called "Assign CUNY Fellows." Assign students who have either value to the appropriate population.
- Advisor Scheduling
- Make a copy of the "Meet our Advising Team Portal" called "Schedule an Advising Session."
- Create a view for each advisor called "Advisor - [advisor's name]."
- This view will consist of the advisor's scheduling widget(s) as a well as a blank div below them.
- Create a method for each advisor called "Advisor - [advisor's name]
- The action that trigger's that method should be: show_schedules_[advisor's UNI]
- The method should have an output type of "AJAX Popup/No Branding."
- The method should have a view of the respective advisor's view page.
- Create a view page called "my_advisor" comprised of:
- Advisor information - which comes from the displayed information about each advisor in the "Meet our Advising Team" protal.
- A heading for the section containing the scheduling widget.
- A section that makes LazyFetch api call to retrieve and display the advisor's seheduling widgets.
- A javascript section at the bottom, have code that repeats every millisecond to see if the blank div exists. Because this div is below the advisor's schedule widgets, it will be rendered after them. Therefore, once the blank div has been rendered, we can check to see whether the advisor has any scheduling widgets. If either the blank div does not exist OR the advisor does not have widgets, display an error that the adivsor does not have online scheduling.
- Each of the above sections is wrapped in an if/then statement based on whether the advisor has a first name. If not, the query to obtain advisor information yielded no results. Therefore display an error that the user has reached an invalid page.
- Create a default method called "advisor_scheduling."
- The method will use the advisor_uni parameter in the URL to call the advisor_info query to obtain information about the selected advisor. The query should filter for people with a role as an advisor. So that if the uni is a match to user, but that user is not an advisor, no information will be returned.
- The method will display the "my_advisor" view page.
- Change the URL of the "Meet our Advising Team" portal to a dummy one.
- Make the "Meet our Advising Team" portal inactive.
- Change the URL of the new portal to: https://advising.sps.columbia.edu/portal/advising_team for a seamless user experience.
- Create a view for each advisor called "Advisor - [advisor's name]."
- Make a copy of the "Meet our Advising Team Portal" called "Schedule an Advising Session."
- CDL Coach Scheduling Portal
- Rather than putting the list of eligible programs into the code using their full names, create a query of eligible programs exporting their 5 character program codes.
- Remove code that became obsolete with the update above (removing spaces and punctuation from the list of codes, removing the conversion of a list of programs in text to an array, etc.)
- Replace the two separate exports in the query that gets students' pending virtual and in-person coach meeting. Replace that with an existence export of whether or not the student has pending appointments. Fix the code in the portal to prevent the student from scheduling a session based on the revised export.
- Registration Monitoring Tab
- Create a tab on the main student page for Registration Monitoring, consisting of the following:
- An entity widget for the registration monitoring entity, consisting of the following fields:
- Status Created Date
- Term
- Status
- Notes
- A list of advising notes of the type "Registration Status."
- An entity widget for the registration monitoring entity, consisting of the following fields:
- Create a tab on the main student page for Registration Monitoring, consisting of the following:
- Registration Monitoring Portal
- Create a user portal that allows advisors to look at students in the programs that they represent who are expected to register in the upcoming term but have not. The portal will also allow for a future inclusion of statistical analysis of registration monitoring status of students against budget projections. The portal will consist of:
- Queries
- available_programs - a list of all the programs for which registration monitoring is used. This will be used to populate the program filter. They are:
- Actuarial Science
- Actuarial Science -- Online
- Actuarial Science -- Online (CPF)
- Applied Analytics
- Applied Analytics -- Online
- Bioethics
- Bioethics -- Online
- Bioethics -- Online (Cert)
- Bioethics (Cert)
- Bioethics and Public Health -- Dual
- Biotechnology
- Classics
- Construction Administration
- Critical Issues in International Relations
- Ecology, Evolution & Environmental Biology
- Enterprise Risk Management
- Enterprise Risk Management -- Online
- Enterprise Risk Management -- Online (Cert)
- Enterprise Risk Management (Cert)
- Human Capital Management
- Human Capital Management -- Online
- Human Rights
- Information and Knowledge Strategy
- Information and Knowledge Strategy -- Online
- Insurance Management -- Online
- Narrative Medicine
- Narrative Medicine -- Online
- Negotiation and Conflict Resolution
- Negotiation and Conflict Resolution -- Online
- Nonprofit Management
- Nonprofit Management -- Online
- Political Analytics
- Psychology
- Quantitative Studies for Finance
- Sports Management
- Strategic Communication
- Strategic Communication -- For Executives
- Strategic Communication -- Online
- Sustainability Analytics
- Sustainability Management
- Sustainability Science
- Sustainable Finance
- Sustainable Finance -- Online
- Sustainable Water Management
- Technology Management
- Technology Management -- For Executives
- United Nations Studies
- Visiting -- Arts in the Summer
- Visiting -- College Edge
- Visiting - College Edge -- Gap Commuters
- Visiting -- Columbia Secondary School
- Visiting -- Foreign Language
- Visiting -- Graduate
- Visiting -- Postbaccalaureate
- Visiting -- Undergraduate
- Wealth Management -- Online
- student_list - A list of all of the students eligible for registration monitoring, with the following features:
- Exports:
- First name
- Last name
- UNI
- Program of study
- Admit term
- Admit term code
- Most recent registration monitoring status (toward the relevant term) created date
- Most recent registration monitoring status (toward the relevant term)
- Most recent registration monitoring notes (toward the relevant term)
- Whether or not the student has had a registration monitoring status entered in the last 7 days.
- Filters:
- Status (new, continuing student)
- Program of study (in the list of relevant programs above)
- Either does not have a most recent registration monitoring status (toward the relevant term) OR has a status, but it is not one of the graduating statuses.
- Does not have any classes with a registration status of "Add" for the relevant term.
- Exports:
- available_programs - a list of all the programs for which registration monitoring is used. This will be used to populate the program filter. They are:
- Views
- Homepage - consisting of:
- A message welcoming the user to the registration monitoring system.
- Which term registration monitoring is in effect.
- A drop-down menu for the user to select whether they want to manage registration monitoring for their students or analyze statistics.
- Upon making a selection and pressing the button:
- The drop-down menu and button will become disabled.
- A message will appear that the data is loading.
- The user will be redirected to the appropriate page.
- Upon making a selection and pressing the button:
- Show Students - consisting of:
- filters - a section where the user can select which population s/he would like to view:
- Program of study (select multiple)
- Admit term (select multiple)
- Starting letter of the alphabet (textbox)
- Ending letter of the alphabet (textbox)
- student_list - a hidden table listing the students with the following columns:
- filters - a section where the user can select which population s/he would like to view:
- Name and UNI
- A link to send an email through Slate.
- Upon clicking thls link, a separate window will pop-up with the student's profile page. The Slate send email pop-up window will appear.
- Users can keep this window open, ideally in a second monitor. If they do, any future email links they click will open in this same window.
- Most recent registration monitoring status (toward the relevant term) date
- Most recent registration monitoring (toward the relevant term) status.
- Most recent registration monitoring (toward the relevant term) notes.
- A link to the student's registration monitoring tab. (opening in a separate window)
- The link will be connected to an onchange event that performs the following actions:
- It will check every 0.1 second to see if the window has opened and if the link to add a registration monitoring status is present.
- Once it is, it will add an event listener to that link. This will be a function that checks every 0.1 second to see if the form to add a new status has loaded and if its button is present.
- If the button is present, it adds an event listener to it, so that when it is clicked:
- It will collect the data entered on the form.
- It will wait until the window closes.
- It will enter the details of the status on to the row.
- The link will be connected to an onchange event that performs the following actions:
- A link to the student's advising notes related to registration monitoring (opening in the same window as the registration monitoring link above, but without any of the JavaScript functions)
- A button to mark the row as updated.
- When the user clicks it, all of the cells except for name/UNI and email are merged together and replaced with the word "updated." (No change is made to the student's record.
- Javascript functions:
- Upon loading the page, cycle through the list of students to see if there are students with an admit term of "(not set)." Otherwise, identify the earliest available admit term and the latest available admit term year.
- For the admit term filter, begin if there are students with a "(not set)" designation, put that on the list. Starting with the latest year, cycle through the years one by one, adding "Fall," "Summer," "spring," to populate the admit term filter (e.g. "Fall 2024," "summer 2024," "Spring 2024.")
- Filtering functionality:
- When the student selects filters and clicks the submit button:
- The selected program and admit term filters are captured and converted to an array.
- The starting and ending last initials are converted to numerical values.
- The student list is cycled through. Each row is checked to see if it is currently displayed.
- If it is currently displayed, check to see if there are any filters for which it should not be included. If so, hide the row.
- If it is not displayed, check to see if it should be included in all filters. If so, display the row.
- The number of displayed rows is counted and listed at the top.
- If there are no students that match the filters:
- Display a row that says there are no matching students.
- There are three columns on the table that do not have headings. Instead, there is a blank cell that is three cells wide and two cells high. If the "no matching students" row is displayed, it does not look good if that cell is included. Therefore, the "no matching students" row is three cells narrower and the blank cell on top has to be removed. If we go from displaying no students to displaying a list of students, we need to re-create that cell.
- When the student selects filters and clicks the submit button:
- Homepage - consisting of:
- Statistical analysis page (to be developed later).
- Queries
- Create a user portal that allows advisors to look at students in the programs that they represent who are expected to register in the upcoming term but have not. The portal will also allow for a future inclusion of statistical analysis of registration monitoring status of students against budget projections. The portal will consist of: