/
FY24.3.x: Technical Design (Slate+Advising)

FY24.3.x: Technical Design (Slate+Advising)

Executive Summary

The purpose of this document is to provide the full details of the technical solution to be used for the build of the Slate+Advising solution. Everything that is needed by the developer(s) to produce the required data model, forms and workflows will be included in this specification.

Technical Components

The following sections will detail the technical components within each functional area that are required to successfully implement this project.

Data Requirements

Purpose

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.

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
      • 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
          • 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
        • 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.
          • 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.
              • 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). 
              • 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."
          • Coach - [Coach Name]: Consists of the coach's Active Scheduler widget(s) and a Blank Div.
        • 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.
    • Move aliases from Front to Slate
      • 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 address.