WHAT IS EMAIL CONFIGURATION
Email configuration is receiving an email and being able to do something about it.
1.1 Contextualize a message for the consultant example: institutionId: 22 This is the institution Id subject: Chemical Engineering Assessment intent: ConsultantMessage The intent is meant to send the contextualized "message" to a consultant scope: [] message: "Urgent: UP Engineering Assessment. Encourage the learner to take the assessment before the closing date". QA: true If QA is true, the config has been tested and is working. If false, the config has not been tested bodyFilter: Chemical Engineering Assessment This is a unique text taken from the Body/HTML of the email pdfFilter: Online Chemical Engineering Assessment This is a unique text taken from the attachment of the email. Recommended that you use REster, pdftext API to select the text
1.2 Contextualize a message for the learner
example:
institutionId: 22
This is the institution Id
subject: Chemical Engineering Assessment
intent: ApplicantMessage
The intent is meant to send the contextualized "message" to the learner
scope: []
message: "Hi {name},
Thank you for paying your booking fee. Your room is secured! 🎉
In the new year, if you choose to reside at the Respublica residence of your choice, you will have to check in before lectures commence.
Tips on check-in will be provided, closer to the time."
This is the message that will be on the ticket
QA: true
If QA is true, the config has been tested and is working. If false, the config has not been tested
bodyFilter: "Chemical Engineering Assessment"
This is a unique text taken from the Body/HTML of the email
pdfFilter: "Online Chemical Engineering Assessment"
This is a unique text taken from the attachment of the email. Recommended that you use REster, pdftext API to select the text
NB: This email configuration will create a ticket for a consultant/ team. The ticket will be sent via email to the technical support consultant. Then the technical support consultant will forward it to the relevant team lead
1.3 Validate the status of an application example: institutionId: 22 subject: Acceptance Letter intent: ValidStatus Check what is the current status of the application scope: [ name: applicationstatus name: reference relates to what will be extracted from the email section: constant constant means this value remains the same value: Provisionally Accepted ] pdfFilter: been conditionally allocated to you QA: true
This email config verifies that when we receive this email with all these settings it will create an intent_discovery for the user to the value Provisionally Accepted as well as add the institution to the PAInstitution & SoftOffer columns for the user
1.4 Validating the data example: institutionId: 22 subject: Confirmation of Application intent: ValidData Verify if the data from an email was captured correctly to the matrix scope: [ name: username name: reference relates to what will be extracted from the email section: body body means everything that appears in the freeform box, including salutation and all the content in the email startafter: enter your username ( startafter setting tells the code to start after the words endlength: 9 endlength is how long the username is endbefore: ) and newly endbefore setting tells the code to end before the words ] QA: true
This email config verifies that when we receive this email with all these settings it will create an intent_discovery for the user to have username. It will include the password and reference if the settings for these were included.
1.5 Ignoring an email example: institutionId: 22 subject: Chemical Engineering Webinar intent: Igonre Do nothing once this type of email has been received scope: [] QA: true If QA is true, the config has been tested and is working. If false, the config has not been tested
This email config will ignore the email if it comes through and do nothing about it. Of course, you are allowed to include more settings like pdfFilter or bodyFilter
NB: All email configurations should be unique so that there is no confusion in the code. All ApplicantMessage intents should be reviews yearly as some of them contains date and these needs to be reviewed.
USEFUL INFORMATION
Please review this yearly and always read the emails as this is subject to change
When you search for an email from the message collection
1. Wits(Attachment): (exact match)
2. SU(Attachment): (partial match)
3. UCT(HTML): (partial match)
4. RU (Attachment): (partial match)
5. UP(Attachment): (partial match)
6. NWU(pdf): (exact match)
7. UFS (Attachment): (exact match)
CPANEL NAVIGATION
What to do when emails are stuck, and no user is receiving any incoming emails?
Check if the mailbox is empty. If it is, this indicates that emails are coming through. Alternatively, the emails might be in the spam filters.
Navigating to Spam Filters
You would only use this if a specific email doesn't come through. Examples of emails that were stuck here in the past were Sasol emails, WSU emails, and mostly bursary emails.
Use the Query Rules:
If the email(s) are found, you need to add the email address to Global Filters (This is explained at the bottom, describing what it is and how to work with it). Adding it to Global Filters ensures that the From address is not considered as spam anymore.
If the email is not found in the spam quarantine, navigate to Track Delivery.
Track Delivery Navigation
Here, you are checking if the email did come through; however, it is not visible to the user.
Here you'll see all emails that have come through for users
The list gets deleted within 10 days of receiving the email.
This is to check if the email was received or not. If the email address does not appear here, it means the issue is not with Gradesmatch but is external.
Global Email Filters
Global Email Filters are emails that usually arrive broken; they come either without a To address or are marked as spam, and Gradesmatch wants them not to be marked as spam. Additionally, these emails come via the queue. Queued emails mean that they first come to cPanel and then go to the user's inbox, while piped emails go straight to the user's inbox.
When Email Accounts (unlimited account) is Full
This indicates that emails are stuck and not getting sent to the user's inbox.
In this case, you need to browse through all the emails. If you see an email with the subject “[Uj-febe]” or “[Uj-listvj]” this is what causes emails to be stuck. You need to manually remove all the emails from the inbox, move them to another folder, and then manually move other emails back to the inbox. Watch these emails move and disappear.
If they don't disappear, navigate to MongoDB, gradesmail.reademailsession.
In the document, check the InSession field. If it's false, this means that there will be no movement of emails from cPanel to the message collection. Change the InSession from false to true. The system usually does this change automatically. However, when the emails have been stuck for a long time, as the sessionLength will confirm, the InSession will give up and remain false.
This unfortunately needs to be done manually.
These emails, “[Uj-febe]” or “[Uj-listvj]” I let them sit in the moved folder as they are not urgent and the users have a backup to see the emails through institution email. These emails are mostly for registered users.
Navigation of failed_messages
From MongoDB, navigate to “failed_messages.” These are emails that we received but without a To-address. You can sort by CreatedTime:-1. You'll then find how many learners should receive the email. If the message is important and the learner should receive it, you need to email the institution and request all the email addresses from the Gradesmatch domain.
Here is a template message:
Good afternoon Megan,
My name is Nqophisa Mtshonisi, an email _data consultant_ from Gradesmatch. At Gradesmatch we produce educational technologies that assist students with career guidance and applying to higher learning institutions. As part of the process, we provide our users with a unique email address that they can access and we notify them via WhatsApp or SMS when a new email is received so they may read it and track it. The domain name we use is @gradesmatch.com, for example, nqophisam@gradesmatch.com could be a version for myself if I were a student.
We received an email with the subject “Provisional Acceptance to study at Nelson Mandela University 2024 - Medical Evaluation and Acceptance of Offer Forms” from you, however, our technology was unable to allocate the email to the correct learner and thus notify them as it did not have a clear “To” address. I would like to assist with helping you connect with the correct learners with this subject. As mentioned earlier, our email domain is @gradesmatch.com so if you send emails to those learners, you may share it so I may ensure they receive the correct emails and are able to adequately take note or respond to your email.
If you have any questions please feel free to contact me
NB: You will always need to edit the underlined. When you send the email always cc Unathi and Lebo. Remember that Stellies, NWU, and UFS will not share any information because of the POPI Act. Institutions other institutions are more accepting.
APS Calculator
https://docs.google.com/document/d/1P-TBXKihbQ40zWhjeML_bb-PIRytZGPMqDqnM5UgzoA/edit
Institutionemail
This is a collection on MongoDB, gradesmatch_reference.institutionemail
If an institution on message collection has the field of InstitutionName as “other” then the institution email needs to be added to the institutionemail collection. Follow how other documents are done.
Central Application Institution
This is a collection in MongoDB, gradesmatch_reference.central_application_institution. The collection is designed for different institutions that share the same email address, allowing Gradesmatch to distinguish their communication.
If the institution belongs to CAO or Coltech, it needs to be added to the relevant document within central_application_institution.
Assuming we want to add “Gradesmatch Institution” to Coltech:
{
"ID": 896254,
"Abbreviation": "GM Inst",
"Name": "Gradesmatch Institution",
"Search": [
"Gradesmatch Institution",
"Gradesmatch"
]
}
Search is an array, and you need to find the unique text within the email that differentiates the institution from other communications originating from the From address.
MONGO QUERIES FOR FIRM OFFERS
Query to find the offers for: VUT, UNIZULU, SPU, SMU, CUT, UFH
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 37,$or: [{ Subject: 'Application Admitted'},{ Subject: 'Application Offered'}]}
Query for Wits:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 30, Attachments:“UW_AD_UGF0_N.pdf”}
Query for UP:
Query for UWC:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 31, Subject:/Offer to study at UWCCK Ref:/}
Query for UJ:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 28, $or: [{ Subject: 'Univ. of Johannesburg - Orange Carpet Admitted'},{ Subject: 'University of Johannesburg - Admittance Letter'}]}
Query for NWU:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 14, Attachments:“PVA014.pdf”}
Query for NWU:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 14, Subject:/Final Acceptance/}
Query for RU:
Query for UFS:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 21, $or: [{ Attachments: 'UV_ADMIT_COV.pdf'},{ Attachments: 'NAS_FINAL.pdf'}]}
Query for UCT:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 19, Html:/OFFER/}
Query for SU:
{CreatedTime: {$gt: ISODate('2024-01-19')},InstitutionId: 12, Subject:“ADMISSIONS COMMUNICATION FROM STELLENBOSCH UNIVERSITY”, Attachments:/Offer_Letter_/}
In all the queries you'll need to amend the time and institutionId where applicable